Java 将JPanel的区域转换为BuffereImage

Java 将JPanel的区域转换为BuffereImage,java,swing,jpanel,Java,Swing,Jpanel,我需要将jpanel的某个区域转换为BuffereImage或其他格式,以便在另一个jpanel中显示 到目前为止,我只看到了将整个jpanel转换为BuffereImage的代码,但在我的例子中,我只需要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(图形)。我认为这是这类事情的推荐方法。