Invalidate() & Visaul Studio 2005
-
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.
-
Moin
Ich nehme mal an, du malst neu via GDI Graphics Objekt?
Ich hatte das gleiche Problem.
In der onDraw() methode meines Controls hab ich jedes mal das Graphics Objekt geholt (via Control::CreateGraphics()), dann ge-clear()-t, und neugezeichnet (mit sich ständig bewegenden Objekten). Hat geflackert wie Sau. Hab viel rumprobiert. Nix half.
Ich habs dann gelöst, indem ich ne PictureBox anstelle von nem Panel zum malen genutzt habe. Von dem lasse ich mir dann das Graphics Objekt geben (Graphics ^gc = Graphics::FromImage(this->pictureBoxArea->Image)) und mach dann damit normal weiter (clear, drawXXX(), ...). Das hat das Flacker Problem gelöst.
Sicherlich keine besonders elegante Lösung, aber mir hats geholfen.
Falls irgentjemand nen besseren Lösungsweg weiss: Her damit!Ciao Geroo