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


Anmelden zum Antworten