簡體   English   中英

如何繪制Java2D仿真的一部分,而該部分不會更改為圖像/緩沖區,因此不必每次都重新繪制其圖元?

[英]How can I draw a portion of my Java2D simulation that doesn't change to an image/buffer so I don't have to redraw it's primitives each time?

如何繪制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上將首選大小設置為等於圖像的大小。 如果不這樣做,則JPanel子類會出現布局問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM