Rumah > Java > javaTutorial > Bagaimana untuk Melukis Segi Empat Yang Tidak Akan Hilang pada JPanel?

Bagaimana untuk Melukis Segi Empat Yang Tidak Akan Hilang pada JPanel?

Patricia Arquette
Lepaskan: 2024-11-05 06:23:01
asal
737 orang telah melayarinya

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

Melukis Segi Empat Yang Tidak Akan Hilang

Dalam kod anda, anda telah mencipta kelas MyPanel yang memanjangkan JPanel. Dalam kelas ini, anda mentakrifkan kaedah DrawRect yang mengambil beberapa hujah untuk melukis segi empat tepat. Walau bagaimanapun, apabila anda memanggil repaint(), ia melukis semula keseluruhan panel, termasuk segi empat tepat sebelumnya.

Untuk mengelakkan ini, anda boleh menggunakan Graphics2D.drawImage() untuk melukis segi empat tepat anda di atas kanvas sedia ada. Begini cara anda boleh mengubah suai kod anda:

<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>
Salin selepas log masuk

Nota:

  • Pendekatan ini mencipta BufferedImage sebagai permukaan lukisan, yang berterusan merentasi panggilan cat semula, membolehkan anda melukis segi empat tepat yang tidak hilang.
  • Ingat untuk menyemak sama ada canvasImage adalah batal dan mulakannya sebelum melukis untuk mengelakkan lukisan pada kanvas kosong.
  • Dalam cat, lukiskan kanvasImej ke atas panel untuk memaparkan segi empat tepat.

Atas ialah kandungan terperinci Bagaimana untuk Melukis Segi Empat Yang Tidak Akan Hilang pada JPanel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan