Heim > Java > javaLernprogramm > Hauptteil

Wie zeichnet man dauerhafte Rechtecke in einem JPanel ohne Leistungseinbußen?

Barbara Streisand
Freigeben: 2024-10-30 05:24:02
Original
299 Leute haben es durchsucht

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

Rechtecke zeichnen, die bestehen bleiben

Problem:

Erstellen von Rechtecken in einem JPanel, die trotz Repaint-Aufrufen sichtbar bleiben, ohne das System durch übermäßiges Ausbremsen zu verlangsamen Neuzeichnen.

Lösung:

Verwenden Sie ein BufferedImage als Malfläche.

Ansatz:

  1. Erstellen Sie eine JPanel-Unterklasse mit einem BufferedImage als Leinwand zum Zeichnen.
  2. Implementieren Sie eine Malmethode, die Rechtecke auf das BufferedImage zeichnet.
  3. Machen Sie das JPanel nur bei Bedarf ungültig und zeichnen Sie es neu, z. B. beim Zeichnen neuer Rechtecke.
  4. Behalten eine Liste der gezeichneten Rechtecke, um wiederholtes Zeichnen zu vermeiden.

Beispiel:

<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>
Nach dem Login kopieren

Vorteile:

  • Rechtecke bleiben sichtbar, ohne bei nachfolgenden Neulackierungen zu verschwinden.
  • Zeichnungs- und Neumalvorgänge werden optimiert, wodurch Leistungsverzögerungen vermieden werden.

Das obige ist der detaillierte Inhalt vonWie zeichnet man dauerhafte Rechtecke in einem JPanel ohne Leistungseinbußen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!