Melukis Segi Empat Yang Kekal di Jawa
Masalah:
Di Java, mencipta JPanel untuk melukis segi empat tepat yang berterusan melebihi satu kitaran cat memberikan cabaran. Pendekatan biasa untuk mengekalkan senarai segi empat tepat dan mengecat semula semua dalam setiap panggilan cat boleh memperlahankan prestasi jika bilangan segi empat tepat adalah ketara.
Pendekatan Tradisional:
Penyelesaian tradisional melibatkan penggunaan cat semula(x, y, tinggi, lebar) untuk mengecat semula hanya kawasan di mana segi empat tepat baharu dilukis. Walau bagaimanapun, ini selalunya gagal, kerana JPanel terus memadamkan segi empat tepat sebelumnya.
Penyelesaian Alternatif - Menggunakan BufferedImage:
Pendekatan alternatif ialah menggunakan BufferedImage sebagai permukaan lukisan. Begini cara ia berfungsi:
Faedah daripada Menggunakan BufferedImage:
Menggunakan BufferedImage untuk lukisan menawarkan beberapa faedah:
Contoh Pelaksanaan:
Pertimbangkan coretan kod berikut, yang menunjukkan pendekatan yang disebutkan di atas:
<code class="java">import java.awt.Graphics2D; import java.awt.image.BufferedImage; public class RectangleDrawer { private BufferedImage canvas; private BufferedImage originalCanvas; public void drawRectangle(int x, int y, int width, int height, Color color) { Graphics2D g = canvas.createGraphics(); g.setColor(color); g.fillRect(x, y, width, height); g.dispose(); } public void repaint() { g.drawImage(canvas, 0, 0, null); } // Other methods for drawing, selecting, and manipulating the image // would go here. }</code>
Dalam contoh ini, kelas RectangleDrawer menggunakan kanvas bernama BufferedImage untuk melukis segi empat tepat. OriginalCanvas digunakan untuk memulihkan imej asal jika perlu.
Kaedah drawRectangle menggunakan objek Graphics2D untuk melukis segi empat tepat pada kanvas dan kaedah mengecat semula menggunakan kaedah drawImage untuk mengemas kini paparan komponen berdasarkan kanvas yang diubah suai.
Dengan menggunakan BufferedImage dengan cara ini, segi empat tepat boleh dilukis dan dipaparkan tanpa dipadamkan dalam kitaran cat seterusnya, menangani masalah asal.
Atas ialah kandungan terperinci Bagaimana untuk Melukis Segi Empat Berterusan dalam Java tanpa Isu Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!