我需要将jpanel的某个区域转换为bufferedImage,或者在其他jpanel中显示其他格式。
到目前为止,我只看到将整个jpanel转换为bufferedImage的代码,但就我而言,我只需要一个jpanel内的区域。
感谢
答案 0 :(得分:2)
由于您已经拥有将整个内容转换为BufferedImage
的代码,因此可以使用该代码,然后在生成的BufferedImage
上调用getSubImage
来获取子区域。
答案 1 :(得分:2)
创建一个具有所需大小的BufferedImage来接收图像 获取Graphics2D以在此图像上绘制并让JPanel绘制在其上。
JPanel panel = ...
BufferedImage image = new BufferedImage(200, 200, TYPE_INT_ARGB);
Graphics2D gg = image.createGraphics();
try {
gg.translate(-100, -20); // start point of region negated
panel.paint(gg);
} finally {
gg.dispose();
}
答案 2 :(得分:1)
到目前为止,我只看到将整个jpanel转换为bufferedImage的代码,但在我的情况下,我只需要一个jpanel内的区域。
然后拍摄该图像并将所需区域重新绘制成新图像,然后就完成了。
答案 3 :(得分:0)
最简单的可能是Robot.createScreenCapture()
您需要从面板的坐标系转换到屏幕坐标系。请参阅Component.getBounds()和Component.getLocationOnScreen()。