Ich habe ein altes Programm geschrieben in Borland Pascal und in Delphi, wenn ich die Form1.Canvas.LineTo und MoveTo Funktionen verwende, bekomme ich einen flackernden Effekt. Kann mir jemand sagen, wie man das Flackern los wird?
Danke
Ein allgemeines Verfahren zum Reduzieren von Flimmern in animierten Grafikoperationen wird als Doppelpufferung bezeichnet. Der Grundgedanke ist, dass Sie alle zu einer Offscreen-Bitmap zeichnen. Wenn Sie die gesamte Szene gerendert haben, kopieren Sie die gesamte Bitmap in die sichtbare Anzeige.
Der Begriff bezieht sich auch auf hardwareunterstützte Techniken wie die Möglichkeit, den ganzen Videoanzeigepuffer mit einem alternativen auszutauschen, der in dedizierten Systemen wie Konsolen-Videospielen verwendet wird.
Obwohl das Verwenden der doppelten Pufferung normalerweise die beste Lösung ist, ist es nicht immer die richtige Lösung und definitiv nicht die speichersparendste Lösung. Wenn Sie jedoch nur einen Teil des Bildes zeichnen, würde ich mit dieser Lösung gehen und auch DoubleBuffered
auf true
setzen, wie in den anderen Kommentaren erwähnt.
Wenn Sie jedoch bei jedem Zeichnen den gesamten Komponentenbereich ausfüllen, sollten Sie einen anderen Ansatz wählen. Wenn Sie ControlStyle
auf csOpaque
setzen, vermeiden Sie, dass die Komponente den Hintergrund löscht und dadurch eine Quelle des Flackerns entfernt, ohne dass der Puffer verdoppelt werden muss. Dies erfordert natürlich, dass Sie auf den gesamten Komponentenbereich zurückgreifen, sodass die Lösung nur dann wirklich geeignet ist, wenn Sie dies tun.
Im Allgemeinen aber, wenn der Speicherverbrauch keine Rolle spielt, würde ich auch die doppelte Pufferung wählen, ich wollte Ihnen nur eine Alternative liefern. :)
Tags und Links delphi