2014-01-17 42 views
1

我已經查看了Java遊戲開發中的一些指南,其中一些修改了BufferedImage,然後將其顯示到Canvas。我的問題是,爲什麼不直接使用Graphics2D將圖像繪製到Canvas?爲什麼我們使用BufferedImage作爲排序的「第三方」。這是否有好處,或者它可能是BufferedImages主要用於處理單個像素的操作?爲什麼在Graphics2D上使用BufferedImage?

+0

我不知道它是如何正確工作的,但在某些情況下,您可能會看到代碼在屏幕上即時繪製內容。即:你可以看到未完成的繪圖週期。 –

+0

從我的經驗中獲得的單個像素,當您需要創建不是預渲染圖像的效果和藝術時。 – arynaq

回答

1

可以使用

Graphics2D g = (Graphics2D)bufferedImage.getGraphics(); 

這種方式獲得任何BufferedImage一個Graphics2D,你可以使用的Java2D的所有繪畫能力,並仍然有它的所有好處(卷積運算,像素操作,重構效果BufferedImage用於遊戲屏幕之間的轉換(例如淡入淡出)。

Swing的JComponent及其子類已經提供雙緩衝功能,所以你是對的,你並不完全需要額外的BufferedImage。不同之處在於,Swing在弄髒區域時會重新繪製區域(例如,當您將另一個窗口移動到遊戲視口上時),這可能會影響您的遊戲定期(實時)更新屏幕或控制(基於事件的遊戲)間隔,所以你最好使用額外的緩衝區。