Visual studio 2005 & Invalidate()

Gast #738234
Lesenswert?

Hallo,
Ich versuche gerade mit dem Befehl "Invalidate();" ein Panel zu löschen 
und die Grafik(ein sich bewegendes Objekt) in diesem neu zu zeichnen.
Das funktioniert auch toll, allerdings gibts leichte Laggs(flackert ein 
bisschen).
Es gibt ja bei dem Befehl "Invalidate" noch weitere Arten, um das Panel 
nur an bestimmten Stellen zu löschen, z.B. mit 
Invalidate(System:Drawing::Region ^region).
Allerdings verstehe ich nit ganz wie ich dieses nutzen kann.
Oder gibt es noch andere Arten das Event Paint aufzurufen ausser mit 
Invalidate???
Falls Jemand rat weiss, würde ich mich sehr freuen.
Vielen Dank im voraus und guten Rutsch, Fubu1000.
Persönliche Seite #738408
Lesenswert?

Das Flackern liegt daran, dass nach einem Invalidate() erstmal 
OnEraseBkgnd() aufgerufen wird und den Hintergrund malt. Anschließend 
das OnPaint() damit alles neu gezeichnet wird.

Eine Möglichkeit das zu Umgehen, war es, OnEraseBkgnd() zu 
überschreiben, sodass der Background nicht mehr gelöscht wird und in 
OnPaint() einen neuen DeviceContext anzulegen, der Kompatibel zum 
Zeichen-DC ist, in diesen dann den Hintergrund einzuzeichnen und 
anschließend der Vordergrund. Zuletzt wurde dann der Kompatible DC in 
den originalen Zeichen-DC kopiert.

Leider hast du nicht angegeben welche Sprache du benutzt(C++? C#?) sieht 
nämlich nach C# aus.
Gast #739021
Lesenswert?

Hallo,
@Simon: Ich arbeite mit C++, habe deine Ausführung verstanden, weiss 
jedoch nit wie ich das umgehen soll mit dem EraseBkgnd().
Werde mich moin mal hinsetzen und versuchen, jedoch wäre ich über jede 
Hilfe dankbar.
Thx und guten Rutsch allen,Fubu.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren