0
如何将JPanel
转换为File
?我的面板有一个移动Image
,我想获得单个帧。如何将JPanel转换为文件?
如何将JPanel
转换为File
?我的面板有一个移动Image
,我想获得单个帧。如何将JPanel转换为文件?
您可以在不同时间点创建面板的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类实现上述功能的简便方法。
当然这不会很有效率,因为您需要为每个帧都创建一个全新的图像。
您最好使用print或printAll来代替paint,因为它不涉及双缓冲......并且不会在屏幕上未实现组件时抛出异常; ) – MadProgrammer
@MadProgrammer,不使用双缓冲区是有道理的。 (代码已更改)。如果组件没有实现,虽然存在绘画问题,但我从来没有遇到异常(平台差异?)问题。基本上我发现组件的大小是(0,0),所以没有什么可以绘制的。 ScreenImage类通过调用布局代码来处理您的尺寸。 – camickr
我已经通过'NullPointerException'获得了它,但它可能与它没有添加到任何父级的事实有关,所以它在设置双缓冲区时遇到了问题......或者某种东西,我只是在这种情况下发现'print'和'printAll'更可靠:P – MadProgrammer