![]() |
Button flimmert
Hallo,
für alle, die meinen vorherigen Thread nicht gelesen haben. Hab eine neue Komponente von TSpeedButton wegen dem Glyphen abgeleitet. Jetzt habe ich die Prozedur Paint überschrieben und einen Glyphen geladen. Es wird alles gemacht, doch der Button flimmert. Hier der Code
Delphi-Quellcode:
inherited Paint;
Canvas.Brush.Color:=clRed; Canvas.Pen.Color:=clBlack; Canvas.MoveTo(0,0); Canvas.LineTo(Width, Height); Glyph.Width:=Width; Glyph.LoadFromFile('C:\test.bmp'); |
Re: Button flimmert
Setz' mal die Eigenschaft doublebuffered auf True ;)
|
Re: Button flimmert
Sehr gut! Das funktioniert!
Aber geht das nicht extrem auf die Performance, wenn ich diese Eigenschaft eingeschaltet habe? |
Re: Button flimmert
Die Komponente wird nur ein weiteres mal zwischengespeichert, das sollte IMHO vor allem für heutige PCs problemlos zu schaffen sein...
|
Re: Button flimmert
Hm,
das Problem war, dass die Prozedur Paint immer wieder aufgerufen wird und ich somit immerwieder das Bild xyz lade. Das geht richtig auf die Performance (Notebook-Lüft geht an)... Muss das irgendwie anders lösen |
Re: Button flimmert
Das könnte auch an deiner Prozedur liegen...
Zeig' mal ein bisschen Code bitte :-D |
Re: Button flimmert
Ok, hatte es erst so:
Delphi-Quellcode:
Doch dadurch, dass Paint ja ständig ausgeführt wird, wird das Bild immer neu geladen und neu gezeichnet. Also habe ich jetzt eine Prozedur geschrieben, die mich das Bild wechseln lässt und habe diese beim Erstellen des Buttons ausgeführt.
procedure TRollOverButton.Paint;
begin inherited Paint; Glyph.LoadFromFile('C:\test.bmp'); end; BTW: Doch wenn ich DoubleBuffered auf True setze, dann zeichnet das Programm einen dicken grauen Rahmen um die normalen TButtons in meinem Programm... |
Re: Button flimmert
Lade das Bitmap doch in der Create-Prozedur in eine Private Variable und zeichne es in der Paint-Methode via Glyph.Assign(...);
Dann wird das Bild nur einmal geladen und muss nur gezeichnet werden... |
Re: Button flimmert
Ja, gute Idee. Kann ich machen.
Hast du noch eine Idee wegen dem DoubleBuffered-Problem? |
Re: Button flimmert
Tut mir leid, ich kann mir nichts darunter vorstellen...
Du kannst ja mal ein Screenshot machen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 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