2010-01-14 80 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來獲取子區域。