在 JPanel 實作中,矩形會消失,因為 Paint() 方法會覆蓋先前的繪圖。為了防止這種情況,我們修改了方法:
我們不直接在 JPanel 上繪畫,而是使用 BufferedImage (canvasImage) 作為繪畫表面。這使得我們可以永久修改圖像,而不影響先前的繪圖。
這裡有一個修改後的paint()方法,使用canvasImage進行繪圖:
<code class="java">@Override public void paint(Graphics g) { super.paint(g); // Handle inherited painting tasks Graphics2D bg = (Graphics2D) g; bg.drawImage(canvasImage, 0, 0, this); }</code>
在JPanel 建構子中初始化canvasImage,如下所示:
<code class="java">canvasImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);</code>
並設定其用於繪圖的圖形上下文:
<code class="java">Graphics2D cg = canvasImage.createGraphics(); cg.setColor(Color.WHITE); cg.fillRect(0, 0, width, height);</code>
現在,您的DrawRect() 方法可以直接修改canvasImage:
<code class="java">public void DrawRect(int x, int y, int size, Color c) { Graphics2D cg = canvasImage.createGraphics(); cg.setColor(c); cg.fillRect(x, y, size, size); }</code>
這種方法有幾個好處:
以上是如何在 JPanel 中永久繪製矩形:使用 BufferedImages 避免覆蓋?的詳細內容。更多資訊請關注PHP中文網其他相關文章!