![]() |
AW: Canvas flackern bei VCL Styles
Hast du mal probiert statt
Delphi-Quellcode:
wirklich
PaintBox1.Refresh;
Delphi-Quellcode:
zu benutzen?
PaintBox1.Invalidate;
Und eventuell könnte man noch versuchen, direkt BitBlt oder StretchBlt aufzurufen, statt Canvas.Draw. (Aber erst danach) |
AW: Canvas flackern bei VCL Styles
PaintBox1.Invalidate habe ich auch schon versucht.
Von BitBlt und StretchBlt habe ich ehrlich gesgt noch nie was gehört:oops::lol: |
AW: Canvas flackern bei VCL Styles
Das wär echt Weltklasse, wenn einer so ein Beispiel-Projekt machen könnte, das die Benutzung der zweiten Bitmap, das blitten und wie man das mit dem Timer steuert, veranschaulicht. Ich hab's leider auch noch nicht ganz kapiert. Wo wird invalidate aufgerufen, was wird im Timer gemacht, was im OnPaint der PaintBox, wo wird geblittet, wie?
Vielleicht hat einer ein Erbarmen, das wär spitze, danke im Voraus! |
AW: Canvas flackern bei VCL Styles
Zitat:
Nur ich habe kein XE.. sorry ;) Vielleicht bringt es was wenn du deinen eigenen DoubleBuffer erstellst? Ka. Ob der in den Styles fehlerhaft ist. gruss |
AW: Canvas flackern bei VCL Styles
Hallo,
hast Du schon mal folgendes versucht (ich beschränke mich auf das Wesentliche, ansonsten Dein Code wie gehabt)
Delphi-Quellcode:
Gruß
procedure TForm1.DrawSpectrum;
begin // clear background Buffer.Canvas.Brush.Color := TStyleManager.ActiveStyle.GetStyleColor (scWindow); Buffer.Canvas.FillRect(Rect(0, 0, Buffer.Width, Buffer.Height)); // Rest wie gehabt end; |
AW: Canvas flackern bei VCL Styles
Habe ich getestet mit dem selben Ergebnis.:|
|
AW: Canvas flackern bei VCL Styles
Zitat:
Mein Kumpel war so freundlich mich an sein XE4 zu lassen Als Hobby Schreiber ist mir das einfach zu teuer. gruss |
AW: Canvas flackern bei VCL Styles
Hallo EWeiss
Herzlichsten Dank, dass du dir exra die Mühe gemacht hast. Es funktioniert top:thumb:. Könntest du mir bitte noch sagen, wo meine Fehler lagen? Danke und liebe Grüsse TTF |
AW: Canvas flackern bei VCL Styles
Zitat:
Zitat:
In deinem Beispiel versuchst du das zu erreichen indem du immer wieder (sehr schlechte Angewohnheit) über Invalidate/Refresh diese anzustoßen damit sie deine Draw Methode ausführt. Das führt umweigerlich dazu das diese flackert was man auch nicht vermeiden kann bei der verwendeten Methode. Innerhalb onPaint eine Draw Funktion ausführen zu lassen ist also keine gute Idee wenn das Paint event von dem gleichen Controll ausgelößt und ausgeführt werden soll. Invalidate veranlasst die PaintBox fortwährend neu zu zeichnen was zu unsauberen Effekten führt. Um dein problem zu beheben werf die procedure PaintBox1Paint raus. Und lasse diese selbst zeichnen in dem du im Timer die Draw function
Delphi-Quellcode:
PaintBox1.Canvas.Draw(0, 0, Buffer);
vor
Delphi-Quellcode:
DrawSpectrum;
einfügst! Deshalb davor weil ansonsten deine Abtastlinie nicht mehr gezeichnet wird. Und schmeiß das Invalidate raus. Eigentlich war das aber schon mit kleinen Einschränkungen von Medium beantwortet worden. Zitat:
Zitat:
Das geht nur von außerhalb bsp. über invalidate aber mit sehr schlechten ausgang wie man sieht. gruss |
AW: Canvas flackern bei VCL Styles
Hallo EWeiss
Ich danke dir vielmals für deine Unterstützung. Ich werde mir merken, wie ich künftig mit PaintBoxes zu zeichnen habe.8-) Liebe Grüsse TTF |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 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