首頁  >  文章  >  Java  >  如何在 JPanel 上繪製一個不會消失的矩形?

如何在 JPanel 上繪製一個不會消失的矩形?

Patricia Arquette
Patricia Arquette原創
2024-11-05 06:23:01683瀏覽

How to Draw Rectangles That Won't Disappear on a JPanel?

繪製不會消失的矩形

在程式碼中,您建立了一個擴充 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>

注意:

  • 此方法建立一個BufferedImage 作為繪圖表面,它在重繪呼叫中持續存在,允許你繪製一個不會消失的矩形。
  • 繪製前記得檢查canvasImage是否為空並初始化它,以避免在空白畫布上繪製。
  • 在繪畫中,將canvasImage繪製到面板來顯示矩形。

以上是如何在 JPanel 上繪製一個不會消失的矩形?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn