2010-01-14 82 views
2

我需要将jpanel的某个区域转换为bufferedImage或其他格式以显示在另一个jpanel中。现在,我只看到了将整个jpanel转换成bufferedImage的代码,但在我的情况下,我只需要一个jpanel内的区域。将JPanel的区域转换为BufferedImage

感谢

回答

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(); 
    } 
+0

你可能会发现你需要使用printAll(Graphics)而不是paint(Graphics)。我认为这是这类事情的推荐方法。 – 2010-01-15 20:31:23

1

到现在为止,我只看到了整个的JPanel转换成一个BufferedImage代码,但对我来说,我需要一个JPanel的内部只是一个区域。

然后拍摄该图像并将所需区域重新绘制成新图像,就完成了。

+0

奥斯卡 - 你在哪里度过了所有的声望?赏金? ^^ – 2010-01-14 18:33:04

+0

每当我达到10K我重生:) – OscarRyz 2010-01-14 19:10:45

2

由于您已将代码转换为BufferedImage,因此您可以使用该代码,然后在BufferedImage上调用getSubImage来获取子区域。