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
Susan Sarandonasal
2024-10-29 04:58:02694semak imbas

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>

Mencipta BufferedImage dan Menetapkannya

Inisialisasikan canvasImage dalam pembina JPanel anda seperti:

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

Dan tetapkan konteks grafiknya untuk lukisan:

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

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>

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!

Kenyataan:
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