Java 将JPanel的区域转换为BuffereImage
我需要将jpanel的某个区域转换为BuffereImage或其他格式,以便在另一个jpanel中显示 到目前为止,我只看到了将整个jpanel转换为BuffereImage的代码,但在我的例子中,我只需要jpanel中的一个区域Java 将JPanel的区域转换为BuffereImage,java,swing,jpanel,Java,Swing,Jpanel,我需要将jpanel的某个区域转换为BuffereImage或其他格式,以便在另一个jpanel中显示 到目前为止,我只看到了将整个jpanel转换为BuffereImage的代码,但在我的例子中,我只需要jpanel中的一个区域 谢谢最简单的可能是 您需要将面板坐标系转换为屏幕坐标系。见和 到目前为止,我只看到了将整个jpanel转换为BuffereImage的代码,但在我的例子中,我只需要jpanel中的一个区域 然后把这张图片重新画成一张新的图片,你就完成了 由于您已经有了将整个内容转换为
谢谢最简单的可能是 您需要将面板坐标系转换为屏幕坐标系。见和 到目前为止,我只看到了将整个jpanel转换为BuffereImage的代码,但在我的例子中,我只需要jpanel中的一个区域
然后把这张图片重新画成一张新的图片,你就完成了 由于您已经有了将整个内容转换为
BuffereImage
的代码,因此可以使用该代码,然后调用生成的BuffereImage
以获取子区域。创建一个具有请求大小的BuffereImage以接收图像。获取用于在此图像上绘制的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();
}
你引用的链接似乎是本地的,你可能想在有人因为一个无辜的错误而否决你之前更新它。奥斯卡-你所有的声誉都花在哪里了??赏金^^每次我达到10K,我就重生:)你可能会发现你需要使用printAll(图形)而不是paint(图形)。我认为这是这类事情的推荐方法。