![]() |
Image Flackert, wenn Cursor nicht über Formular.
Hallo, noch ein Problem in meinem Programm.
Ich entwickle grad meinen MediaPlayer weiter, mein Problem nun, wenn der Mauscursor nicht über einem der Formulare meines Programmes liegt, Flackert die PaintBox auf dem Formular. Die PaintBox wird über einen Timer sändig aktuallisiert um die FFT- oder die Wavedaten anzuzeigen. Schonmal danke für alle Antworten. |
Re: Image Flackert, wenn Cursor nicht über Formular.
Zeichnes du den Inhalt der Paintbox immer komplett neu?
Zeichen auf ein Bitmap im Speicher und kopiere es bei bedarf auf den Canvas der Paintbox. Das ist wesentlich performanter und das flackern sollte nicht auftreten. |
Re: Image Flackert, wenn Cursor nicht über Formular.
Ich zeichne per
Delphi-Quellcode:
DoubleBuffered ist auch aktiv!
PaintBox.MoveTo(0, Height div 2);
For i := 1 To 255 do PaintBox.LineTo(i, FFTData[i]); |
Re: Image Flackert, wenn Cursor nicht über Formular.
Du machst genau das was Luckie vermutetet hat. Bei jeder Aktion die du ausführst auf die Canvas wird die Ausgabe aktuallisiert was das Flackern verursacht. Machs so:
Delphi-Quellcode:
var lBmp: TBitmap;
begin lBmp := TBitmap.Create; try //Alle Aktionen auf eine Canvas/Bitmap im Speicher ausführen lBmp.SetSize(PaintBox.Width, PaintBox.Height); lBmp.Canvas.MoveTo(0, Height div 2); For i := 1 To 255 do lBmp.Canvas.LineTo(i, FFTData[i]); //Und jetzt das Bitmap mit einem Rutsch auf die Canvas kopieren BitBlt(PaintBox.Canvas.Handle, 0, 0, lBmp.Width, lBmp.Height, lBmp.Canvas.Handle, 0, 0, SRCCOPY); finally lBmp.Free; end; |
Re: Image Flackert, wenn Cursor nicht über Formular.
Mein Delphi meckert bei dem Befehl SetSize! Hab ich vergessen, irgendwelche Units einzubinden.
|
Re: Image Flackert, wenn Cursor nicht über Formular.
Zitat:
|
Re: Image Flackert, wenn Cursor nicht über Formular.
Habs jetzt mit:
Delphi-Quellcode:
bemacht, musste aber Feststellen, das das Flackern nur noch schlimmer wurde. Jetzt ist es sogar nicht mehr flüssig, wenn der mauszeiger über dem formular ist.
lBmp.Width := frmFFT.PaintBox.Width;
lBmp.Height := frmFFT.PaintBox.Height; muss mir wohl doch nochmal das mit den threads anschauen. Gruss Christian |
Re: Image Flackert, wenn Cursor nicht über Formular.
Zitat:
|
Re: Image Flackert, wenn Cursor nicht über Formular.
ich würde das bitmap im oncreat createn und im onclose freen und das die ganze zeit benutzen das spart auch zeit und ist meiner Meinung nach auch sauberer.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz