# Doppelpufferung



## Reality (1. Sep 2004)

Hi,
ich habe das bis jetzt noch nicht ganz verstanden.


```
public void update(Graphics g){
       // dbImage = Image-Objekt     dbg = Graphics-Objekt
      // Initialisierung des DoubleBuffers
      if (dbImage == null)
      {
        dbImage = createImage (this.getSize().width, this.getSize().height);
        dbg = dbImage.getGraphics ();

      }

     // Bildschirm im Hintergrund löschen
     dbg.setColor (getBackground ());
     dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);

     // Auf gelöschten Hintergrund Vordergrund zeichnen
     dbg.setColor (getForeground());
     paint (dbg);

     // Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
     g.drawImage (dbImage, 0, 0, this);
    }
```

Erzeugt das createImage ein leeres Bild mit der angegebenen Größe? Falls ja, warum wird dann noch am Schluß noch mit g.drawImage das Image gezeichnet?

Liebe Grüße
Reality


----------



## Beni (1. Sep 2004)

Zuerst wird auf das Bild _dbImage_ gezeichnet (mit _paint(dbg)_), danach wird dieses Bild auf die Component gezeichnet (mit _g.drawImage(...)_). Der Witz dabei: alles was auf der Component ist, wird sofort durch das neue Bild ersetzt, _ohne_ dass die Component zuerst "gesäubert" werden müsste (genau dieses "Säubern", also das komplette Überzeichnen der Component mit einer neutralen Farbe, ist für das Flimmern verantwortlich, dass man manchmal sieht).

P.S. anstelle von "createImage" könnte man "createVolatileImage" verwenden, dann kriegt man Hardwareunterstützung :wink:


----------



## Reality (1. Sep 2004)

Hi Beni,
danke! 
Aber an einer Stelle muss ich dir widersprechen:


			
				Beni hat gesagt.:
			
		

> P.S. anstelle von "createImage" könnte man "createVolatileImage" verwenden, dann kriegt man Hardwareunterstützung :wink:





> ....
> However, a few issues will keep your image from being accelerated:
> 
> - If you constantly change the contents of the image (for example, drawing graphics primitves into the image), the image won`t be accelerated. (Was bei mir ja auch der Fall ist, oder nicht?)
> ...



Liebe Grüße
Reality


----------



## Beni (1. Sep 2004)

Hm, gute Argumente.

Aber ein Versuch ists allemal wert :wink:


----------

