mikrocontroller.net

Forum: PC-Programmierung Visual studio 2005 & Invalidate()


Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, dieses Managed C++, kann das sein? Sowas wie 
Invalidate(System:Drawing::Region ^region) habe ich ja noch nie gesehen 
;)

wühl dich mal hierdurch:
http://www.google.de/search?hl=de&q=gdi+double+buf...

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Danke für die Mühe Simon.
Habe das Problem damit beseitigt, das ich einfach ne Picturebox, statt 
dem Panel genommen habe. Jetzt flackert es nicht mehr.
Vielen Dank und gruss fubu.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.