如何繪製我的Java2D仿真的一部分,該仿真不會更改爲圖像/緩衝區,因此我不必每次都重繪它的基元?如何繪製我的Java2D仿真的一部分,該仿真不會更改爲圖像/緩衝區,所以我不必每次重繪它的基元?
我有需要我吸引了成千上萬的小行我的Java2D仿真的一部分。但是,這部分應用程序一旦繪製就不會改變,因此在每次循環迭代(執行主動渲染)時重新繪製數以千計的基元是沒有意義的。
那麼,什麼對象做我用來繪製並保存它,然後讓我這個簡單的整個圖像繪製到我的畫布,然後在它什麼樣的變化上面畫?
如何繪製我的Java2D仿真的一部分,該仿真不會更改爲圖像/緩衝區,因此我不必每次都重繪它的基元?如何繪製我的Java2D仿真的一部分,該仿真不會更改爲圖像/緩衝區,所以我不必每次重繪它的基元?
我有需要我吸引了成千上萬的小行我的Java2D仿真的一部分。但是,這部分應用程序一旦繪製就不會改變,因此在每次循環迭代(執行主動渲染)時重新繪製數以千計的基元是沒有意義的。
那麼,什麼對象做我用來繪製並保存它,然後讓我這個簡單的整個圖像繪製到我的畫布,然後在它什麼樣的變化上面畫?
可以畫出一個BufferedImage
,然後再將BufferedImage
的內容繪製到一個Swing組件,如JPanel
。
爲了繪製到BufferedImage
,一個將使用createGraphics
以獲得圖像的Graphics2D
上下文:
BufferedImage img = new BufferedImage(width, height, type);
Graphics2D g = img.createGraphics();
// do drawing using the Graphics2D object.
g.dispose();
再後來,通過重寫paintComponent
方法繪製BufferedImage
的內容到一個JPanel
:
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, null); // Draw img onto the JPanel.
}
請注意,您還應該重寫getPreferredSize()以返回圖像的大小,或者在JPanel上設置首選大小等於您的大小r圖像。如果你不這樣做,你的JPanel子類會出現佈局問題。