flicker free drawing

Tobias500

Mitglied
Habe Probleme ein flackerfreies Zeichnen von einer Kuvenfunktion in das Mainframe hinzubekommen. Ich habe alles so programmiert wie ich es in einem Artikel gelesen habe. Trotzdem bemerke ich beim Neuzeichnen des Hintergrundes ein Flackern, und die alte Hintergrundfarbe wird während des Neuzeichens kurzzeitig eingeblendet.
Vielleicht schaut sich einer der Cracks mal mein Programm an.
Mit den Pfeil- Tasten (Rechts- Links wird das Scrolling realisiert). Ein Timer fragt alle
100 ms die Pfeiltasten über DirectInput ab.


Vielen Dank Tobias

// Ausschnitt OnPaint
Bitmap backpuffer = new Bitmap(this.Width,this.Height);
Graphics g_back = Graphics.FromImage(backpuffer);
g_back.FillRectangle(Brushes.Aquamarine,0,0,this.Width,this.Height);

g_back.DrawImage(this.m_SinusBitmap,new Rectangle(10,10,700,300),this.ScrollRectangle,GraphicsUnit.Pixel);
e.Graphics.DrawImage(backpuffer,0,0); // flip Backbuffer

g_back.Dispose();
backpuffer.Dispose();
System.GC.Collect();
 

Anhänge

So ein Problem hatte ich auch. Der Haken an der ganzen Sache ist, dass der Formularinhalt gelöscht (Hintergrund gezeichnet) wird, bevor du über onPaint die überhaupt Möglichkeit erhälst, deine Grafik ohne Flackern neu zu zeichnen. Um das zu unterdrücken, reicht es, die Methode onPaintBackground zu überschreiben und leer zu lassen.

-> Der Hintergrund wird gar nicht erst gezeichnet und du hast alle zeit der Welt, dein Bild neu zu erstellen. Funktioniert auch prima, wenn du dein Formular vergrösserst/verkleinerst (also ohne Flackern).

Viel Spass.
 
Zurück