Auf Formularcanvas zeichnen wird nicht angezeigt



  • Ich hab in Anlehnung an das Bsp.Projekt earthpng im Games-Ordner des BCB ein kleines Programm geschrieben. Habe mir da eine IdleLoop erstellt, in welcher ich meine Objekte bewege und auf das Canvas des Formulars zeichne.
    Leider wird das was ich da dann draufzeichne aber erst aktualisiert, wenn ich einmal den Fokus wechsel. Ich habs dann mal mit Form->Repaint() probiert aber da gibts nur ein einnziges riesiges flackern.

    Dann habe ich einfach den Zeichencode aus dem Beispielprojekt kopiert (zumind. das wichtige aber auch da bekomme ich erst das neuzeichnen, nachhdem ich zum Bsp. oben auf die Formulartitelleiste geklickt habe.

    Wie realisiere ich das neuzeichnen, das es funktioniert?



  • im OnPaint Ereignis zeichnen. Jedes Fenster muss zu jederzeit wissen, wie es sich darstellen muss.

    Veranlassen kann man das Neuzeichnen mit

    Form->Update();



  • Dann flackert es aber mehr als nur ein wenig.
    Im übrigen machen die das in dem genannten Beispielprojekt auch nicht mit Update() und es geht trotzdem, komischerweise.



  • Hast du DoubleBuffered bei deiner Form auf true?
    Statt Update kann man auch Repaint() oder Invalidate() verwenden. Das Ergebnis ist das gleiche.


Anmelden zum Antworten