【问题标题】:How do you convert a JPanel to a File?如何将 JPanel 转换为文件?
【发布时间】:2017-04-06 16:45:34
【问题描述】:

如何将JPanel 转换为File?我的面板有一个移动的Image,我想获得单独的帧。

【问题讨论】:

    标签: java image swing file jpanel


    【解决方案1】:

    您可以在不同的时间点创建面板的BufferedImage,然后将图像保存到文件中。

    这个的基本逻辑是:

    BufferedImage image = new BufferedImage(panel.getWidth(), panel.getHeight(), BufferedImage.TYPE_INT_RGB);
    Graphics2D g2d = image.createGraphics();
    panel.print( g2d );
    g2d.dispose();
    ImageIO.write(...);
    

    查看Screen Image 类,了解实现上述功能的便捷方法。

    当然这不会很有效,因为您需要为每一帧提供一个全新的图像。

    【讨论】:

    • 您最好使用printprintAll 而不是paint,因为它不涉及双缓冲......并且如果组件不是,则不会引发异常在屏幕上实现;)
    • @MadProgrammer,不使用双缓冲区是有道理的。 (代码已更改)。如果组件没有实现,尽管存在绘画问题,我从来没有遇到过异常问题(平台差异?)。基本上我发现组件的大小是 (0, 0) 所以没有什么可以画的。 ScreenImage 类通过调用布局代码为您处理尺寸。
    • 我已经通过NullPointerException 获得了它,但这可能与它根本没有添加到任何父级的事实有关,因此它在设置双缓冲区时遇到了问题。 .. 或者别的什么,我刚刚发现 printprintAll 在这些情况下更可靠:P
    • @camickr 我不明白“g2d.dispose()”和“ImageIO.write(...)”这行代码。你能解释一下吗?谢谢!
    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多