Rumah > Java > javaTutorial > Cara Melukis Segi Empat Secara Kekal dalam JPanel: Menggunakan BufferedImages untuk Mengelakkan Penimpaan?

Cara Melukis Segi Empat Secara Kekal dalam JPanel: Menggunakan BufferedImages untuk Mengelakkan Penimpaan?

Susan Sarandon
Lepaskan: 2024-10-29 04:58:02
asal
730 orang telah melayarinya

How to Draw Rectangles Permanently in a JPanel: Using BufferedImages to Avoid Overwriting?

Melukis Segi Empat dengan Cara Kekal

Dalam pelaksanaan JPanel anda, segi empat tepat hilang kerana kaedah paint() menimpa lukisan sebelumnya. Untuk mengelakkan ini, kami mengubah suai pendekatan kami:

Menggunakan BufferedImage sebagai Permukaan Lukisan

Daripada melukis terus pada JPanel, kami menggunakan BufferedImage (canvasImage) sebagai permukaan lukisan kami. Ini membolehkan kami mengubah suai imej secara kekal tanpa menjejaskan lukisan sebelumnya.

Kaedah cat() tersuai

Berikut ialah kaedah cat() diubah suai yang menggunakan canvasImage untuk lukisan:

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

Mencipta BufferedImage dan Menetapkannya

Inisialisasikan canvasImage dalam pembina JPanel anda seperti:

<code class="java">canvasImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);</code>
Salin selepas log masuk

Dan tetapkan konteks grafiknya untuk lukisan:

<code class="java">Graphics2D cg = canvasImage.createGraphics();
cg.setColor(Color.WHITE);
cg.fillRect(0, 0, width, height);</code>
Salin selepas log masuk

Melukis Segiempat tepat pada BufferedImage

Kini, kaedah DrawRect() anda boleh mengubah suai canvasImage terus:

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

Ciri Tambahan

Pendekatan ini memberikan beberapa faedah:

  • Cabutan Berterusan: Segi empat tepat dilukis secara kekal pada BufferedImage.
  • Lukisan Dioptimumkan: Daripada mengecat semula keseluruhan JPanel, hanya bahagian yang diubah suai bagi imej dikemas kini.
  • Menyokong Buat Asal/Buat Semula (Potensi): Dengan menjejaki perubahan pada imej, anda boleh melaksanakan fungsi buat asal/buat semula.

Atas ialah kandungan terperinci Cara Melukis Segi Empat Secara Kekal dalam JPanel: Menggunakan BufferedImages untuk Mengelakkan Penimpaan?. 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