繪製不會消失的矩形
在程式碼中,您建立了一個擴充 JPanel 的 MyPanel 類別。在此類別中,您定義了一個方法 DrawRect,該方法採用多個參數來繪製矩形。但是,當您呼叫 repaint() 時,它會重新繪製整個面板,包括先前的矩形。
為了防止這種情況,您可以使用 Graphics2D.drawImage() 在現有畫布上繪製矩形。以下是修改程式碼的方法:
<code class="java">class MyPanel extends JPanel { private BufferedImage canvasImage; // Create a BufferedImage to store the canvas public void DrawRect(int x, int y, int size, Color c) { if (canvasImage == null) { canvasImage = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g = canvasImage.createGraphics(); g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); g.dispose(); } Graphics2D g = canvasImage.createGraphics(); g.setColor(c); g.fillRect(x, y, size, size); g.dispose(); repaint(); } @Override public void paint(Graphics g) { super.paint(g); g.drawImage(canvasImage, 0, 0, null); // Draw the canvasImage onto the panel } }</code>
注意:
以上是如何在 JPanel 上繪製一個不會消失的矩形?的詳細內容。更多資訊請關注PHP中文網其他相關文章!