Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Melukis Segi Empat Berterusan dalam JPanel Tanpa Kemerosotan Prestasi?

Barbara Streisand
Lepaskan: 2024-10-30 05:24:02
asal
299 orang telah melayarinya

How to Draw Persistent Rectangles in a JPanel Without Performance Degradation?

Melukis Segi Empat Yang Berkekalan

Masalah:

Mencipta segi empat tepat dalam JPanel yang kekal kelihatan walaupun mengecat semula panggilan, tanpa memperlahankan sistem akibat berlebihan melukis semula.

Penyelesaian:

Gunakan BufferedImage sebagai permukaan lukisan.

Pendekatan:

  1. Buat subkelas JPanel dengan BufferedImage sebagai kanvas untuk lukisan.
  2. Laksanakan kaedah cat yang melukis segi empat tepat pada BufferedImage.
  3. Batalkan dan cat semula JPanel hanya apabila perlu, seperti semasa melukis segi empat tepat baharu.
  4. Simpan senarai segi empat tepat yang dilukis untuk mengelakkan lukisan berulang.

Contoh:

<code class="java">// Relevant JPanel subclass
class MyPanel extends JPanel {

    private BufferedImage canvasImage; // Image for drawing rectangles

    // Draw a rectangle
    public void drawRect(int x, int y, int width, int height) {
        Graphics2D g = canvasImage.createGraphics();
        g.setColor(Color.RED);
        g.fillRect(x, y, width, height);
        g.dispose();
        repaint(); // Redraw the panel with updated canvasImage
    }

    // Update view
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(canvasImage, 0, 0, null); // Draw the canvasImage on the panel
    }
}</code>
Salin selepas log masuk

Kelebihan:

  • Segi empat tepat kekal kelihatan tanpa hilang dalam cat semula berikutnya.
  • Operasi melukis dan mengecat semula dioptimumkan, menghapuskan ketinggalan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Melukis Segi Empat Berterusan dalam JPanel Tanpa Kemerosotan Prestasi?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!