将JPanel的区域转换为BufferedImage

时间:2010-01-14 18:13:33

标签: java swing jpanel

我需要将jpanel的某个区域转换为bufferedImage,或者在其他jpanel中显示其他格式。

到目前为止,我只看到将整个jpanel转换为bufferedImage的代码,但就我而言,我只需要一个jpanel内的区域。

感谢

4 个答案:

答案 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()