我需要将 jpanel 的某个区域转换为 bufferedImage 或其他格式以显示在另一个 jpanel 中。
到目前为止,我只看到了将整个 jpanel 转换为 bufferedImage 的代码,但就我而言,我只需要 jpanel 内的一个区域。
谢谢
创建一个具有请求大小的 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();
}
由于您已经有将整个事物转换为 a 的代码BufferedImage
,因此您可以使用它,然后调用getSubImage
结果BufferedImage
以获取子区域。
到目前为止,我只看到了将整个 jpanel 转换为 bufferedImage 的代码,但就我而言,我只需要 jpanel 内的一个区域。
然后拍摄该图像并将所需区域重新绘制为新图像,您就完成了。
最简单的可能是Robot.createScreenCapture()
您需要从面板的坐标系转换为屏幕坐标系。请参阅Component.getBounds()和Component.getLocationOnScreen()。