Flackern bei Timer und Image
-
@ Joe
Mit dem Timer hat wunderbar geklappt aber bei der schleife Flackert das Bild immer noch .Ich lasse von der rechten Programmseite ein panel nach links aufgehen mit Grafik drauf aber trotz Precces message flackert die Grafikl immer noch.
Hier der Code
int w = 30,l = 656; // Positionwerte des Panels mit Image for(w,l;w < 313,l > 400 ;w+=5,l-=5) { Panel2->Width = w; Panel2->Left = l; Application->ProcessMessages(); //Sleep(10); }
-
Wie er schon sagte... DoubleBuffered sollte noch aktiviert werden, bei der Schleifenversion...
-junix
-
@ junix
Sorry habe es jetzt in der Schleife klappt aber leider nicht flackert immer noch. Wie gesgat beim Timer hat es funktioniert. Naja villeicht denke ich heute auch wenig Falsch .
MFG Praetorianer
-
Und DoubleBuffered steht auf true, ja?
-
DoubleBuffered steht auf True. hhhhhmmmmm......
ratlos. Kann das möglich sein weil ich das Image auf einen Panel habe , ich vermute dieses , aber bin mir net sicher.

Gruss
-
@ junix
Es Lag doch am Panel habe jetzt das Panel weggemacht und sihe da es geht

-
So jetzt geht es ohne flackern aber nun ist das problem ich kann nix ablegen wie zum beispiel: Button oder so, auf einen panel aber funktioniert es , aber dann flackert mein image wieder. wie kann ich das beheben.
Gruss Praetorianer

-
Hallo,
Warum erstellst du dir nicht eine eigene Komponente die du von TImage ableitest und das erfüllt was du wünschst.Ich habe bei mir eine Komponente gemacht auf ein Panel gelegt und es funktioniert prima auch wenn ein Button im Bild ist hab ich extra noch probiert.
Ach ja. Ich nehme die Zeichnung in einem erzeutem Bitmap vor und kopiere es mit CopyRect in den Canvas des Images.
Vieleicht hilfts ja weiter.
PS: Blätter mal in der Suchfunktion hier findest du ein paar nützliche Beispiele.
Grüsse
Waldseeduo
-
Joe_M. schrieb:
Geht auch in einer Schleife: Application->ProcessMessages(); ...
Flackern sollte mit DoubleBuffered = true; verschwinden...Zum Flackern hätte ich da noch ne Frage...
ich erstelle ein Image während der Laufzeit ungefär soTSegment::TSegment(int x,TWinControl *zeiger) { Bild=new TImage(zeiger); Bild->Parent=zeiger; Bild->Left=x; Bild->Height=200; Bild->Width=100; Bild->Top=25; Bild->Canvas->Pen->Width=5; Bild->DoubleBuffered = true; }und da geht das mit DoubleBuffered nicht

kann mir da einer helfen?
-
TImage selbst besitzt kein DoubleBuffered. Wenn das Image aber z.B. auf einem Panel liegt, kannst Du beim dem Panel DoubleBuffered = true einstellen.