2009-10-25 36 views
0

如何繪製我的Java2D仿真的一部分,該仿真不會更改爲圖像/緩衝區,因此我不必每次都重繪它的基元?如何繪製我的Java2D仿真的一部分,該仿真不會更改爲圖像/緩衝區,所以我不必每次重繪它的基元?

我有需要我吸引了成千上萬的小行我的Java2D仿真的一部分。但是,這部分應用程序一旦繪製就不會改變,因此在每次循環迭代(執行主動渲染)時重新繪製數以千計的基元是沒有意義的。

那麼,什麼對象做我用來繪製並保存它,然後讓我這個簡單的整個圖像繪製到我的畫布,然後在它什麼樣的變化上面畫?

回答

3

可以畫出一個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. 
} 
0

請注意,您還應該重寫getPreferredSize()以返回圖像的大小,或者在JPanel上設置首選大小等於您的大小r圖像。如果你不這樣做,你的JPanel子類會出現佈局問題。