[JAVA] Double Buffering

Thomas Darimont

Erfahrenes Mitglied
[KeyWords]
Flackern verhindern; Pufferung; DoppelPufferung; DoubleBuffering;
[/KeyWords]

Servus!

Schreibe stelle hier jetzt mal ne Anleitung zur DoppelPufferung der Grafikausgabe unter Java ab, dass ich die immer schön zur Hand habe wenn ich sie in der BA mal brauche... ;-)

[AWT]->[Frame]

Bei der Klasse Frame gibt es die beiden Methoden paint(Graphics g) und
update(Graphics g) und repaint();

durch repaint() wird die Methode update(Graphics g) und danach die Methode paint(Graphics g) aufgerufen. In der "Ur-Version" löscht update(Graphics g) den Bildbreich der neu gezeichnet werden soll und ruft dann paint(Graphics g) auf ...

wenn wir jetzt Gepufferte Grafikausgaben erzeugen wollen müssen wir nur die Methode update(Graphics g) überlagern ...

Code:
Image bufImage;
Graphics bufG;

...

public void update(Graphics g){
        
        int w = this.getSize().width;
        int h = this.getSize().height;

        if(bufImage == null){
              bufImage = this.createImage(w,h);
              bufG = bufImage.getGraphics();
        }
        
        bufG.setColor(this.getBackground());
        bufG.fillRect(0,0,w,h);
        
        bufG.setColor(this.getForeground());
        
        paint(bufG);

        g.drawImage(bufImage,0,0,this);

}

... so werd' dass hier demnächst auch mal als Tutorial heraus bringen wo auch ne Begründung dabei stehen wird, warum das hier funktioniert *g*

Gruss Tom
 
Zuletzt bearbeitet:
Also bei mir gehts darum, dass ein Image (java.awt.Image) flackert; dass wird auch mit deiner überschriebenen update-Methode nicht verhindert...
 
Zurück