2D-Grafik Aufwendiges Zeichnen beschleunigen

sTaX

Mitglied
Hallo,

ich habe ein Programm geschrieben, welches in einer von JComponent abgeleiteten Klasse auf das Graphics-Objekt sehr sehr viele Rechtecke zeichnet.

Dies tue ich in der painComponent-Methode.

Mein Problem ist, dass bei jeder minimalen Änderung komplett neugezeichnet wird und dies sehr lange dauert.

Genauer gesagt. Das aufwendige Zeichnen (und berechnen) ist ein Hintergrund. Eine Art Landkarte.

Dies muss eigentlich nicht so oft passieren. Nur bei bestimmen Aktionen (wie Zoomen) sollte der "Hintergrund" neu gezeichnet werden.

Gibt es da irgendwelche "Tricks" damit der Hintergrund gleich bleibt solange man nicht etwas anderes sagt?
 
Naja, man muss zumindest definieren, was "Hintergrund" und was "Vordergrund" ist. Im einfachsten Fall ginge das wohl mit einem BufferedImage, grob im halb-Pseudocode angedeutet:
Java:
class ImageComponent extends JComponent
{
    private BufferedImage backgroundImage;

    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        validateBackgroundImage(); // Neu erstellen falls null oder falsche Größe, ggf. neu zeichnen
        g.drawImage(backgroundImage);        
        drawForegroundStuff(g);
    }

}
Mit beliebigen Abstufungen, je nachdem, wie das ganze angewendet werden soll...
 

Zurück
Oben