2017-04-06 66 views

回答

4

您可以在不同時間點創建面板的BufferedImage,然後將圖像保存到文件中。

這種情況的基本邏輯是:

BufferedImage image = new BufferedImage(panel.getWidth(), panel.getHeight(), BufferedImage.TYPE_INT_RGB); 
Graphics2D g2d = image.createGraphics(); 
panel.print(g2d); 
g2d.dispose(); 
ImageIO.write(...); 

退房的Screen Image類實現上述功能的簡便方法。

當然這不會很有效率,因爲您需要爲每個幀都創建一個全新的圖像。

+0

您最好使用print或printAll來代替paint,因爲它不涉及雙緩衝......並且不會在屏幕上未實現組件時拋出異常; ) – MadProgrammer

+0

@MadProgrammer,不使用雙緩衝區是有道理的。 (代碼已更改)。如果組件沒有實現,雖然存在繪畫問題,但我從來沒有遇到異常(平臺差異?)問題。基本上我發現組件的大小是(0,0),所以沒有什麼可以繪製的。 ScreenImage類通過調用佈局代碼來處理您的尺寸。 – camickr

+0

我已經通過'NullPointerException'獲得了它,但它可能與它沒有添加到任何父級的事實有關,所以它在設置雙緩衝區時遇到了問題......或者某種東西,我只是在這種情況下發現'print'和'printAll'更可靠:P – MadProgrammer