我需要将jpanel的某个区域转换为bufferedImage或其他格式以显示在另一个jpanel中。现在,我只看到了将整个jpanel转换成bufferedImage的代码,但在我的情况下,我只需要一个jpanel内的区域。将JPanel的区域转换为BufferedImage
感谢
我需要将jpanel的某个区域转换为bufferedImage或其他格式以显示在另一个jpanel中。现在,我只看到了将整个jpanel转换成bufferedImage的代码,但在我的情况下,我只需要一个jpanel内的区域。将JPanel的区域转换为BufferedImage
感谢
用请求的大小创建一个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();
}
最简单的很可能是Robot.createScreenCapture()
你需要从面板的坐标系统转换到屏幕坐标系。见Component.getBounds()和Component.getLocationOnScreen()。
您引用的链接似乎是本地的,您可能想要在有人低估您的无辜错误之前更新该链接。 – 2010-01-14 18:18:35
到现在为止,我只看到了整个的JPanel转换成一个BufferedImage代码,但对我来说,我需要一个JPanel的内部只是一个区域。
然后拍摄该图像并将所需区域重新绘制成新图像,就完成了。
奥斯卡 - 你在哪里度过了所有的声望?赏金? ^^ – 2010-01-14 18:33:04
每当我达到10K我重生:) – OscarRyz 2010-01-14 19:10:45
由于您已将代码转换为BufferedImage
,因此您可以使用该代码,然后在BufferedImage
上调用getSubImage
来获取子区域。
你可能会发现你需要使用printAll(Graphics)而不是paint(Graphics)。我认为这是这类事情的推荐方法。 – 2010-01-15 20:31:23