Bildschirm flackert bei Befehl Update();



  • Hallo Programmierer,
    ich programmiere unter C++ V unter Windows mit Power++ von Sybase.
    Um ein Spiel zu programmieren, möchte ich nun eine Picturebox mit
    "SetLeft" oder SetRectangle" verschieben.
    Auch habe ich versucht mit "canvas.DrawLine" ein Bild herzustellen.
    Wenn ich den Befehl "Update()" einfüge, flackert das Bild, wie kann
    ich eine Bewegung eines Canvas-Objekts oder einer Picturebox fließend machen?
    Schöne Grüße und vielen Dank.

    Heike



  • Habe vor kurzem zugesehen wie zeri Kollegen von mir das selbe Problem hatten.
    Allerdings haben die unter OpenGL programmiert.
    Sie sagten das Problem liegt darin dass wenn das Bild sich verändert, es erst neu errechnet wird. sobald es fertig ist, wird das alte gelöscht und dann das neue dargestellt. Das Flackern entsteht dadurch dass der weisse (?) hintergrund zu sehen ist, wenn das alte entfernt und das neue dargestellt wird.

    Die haben das gelöst indem sie BackBuffering oder sowas eingebauthaben.
    Das bedeutet dass das neu errechnete Bild über das alte gelegt wird.
    dann wird erst das alte bild entfernt. somit verschwindet das flackern.

    hoffe ich konnte dir ne idee geben...



  • das stichwort ist double buffering. das neue bild wird erst im speicher aufgebaut. wenn es fertig ist werden die bilder gewechselt.



  • Floh schrieb:

    das stichwort ist double buffering. das neue bild wird erst im speicher aufgebaut. wenn es fertig ist werden die bilder gewechselt.

    Meine Rede 🙂



  • Vielen Dank.
    Ich habe auf den Befehl "Update();" verzichtet und einfach das Bild aktuallisiert. "pictb_1->SetBitmap(bild);".
    Es ruckelt zwar jetzt etwas, aber es geht so.
    Vielen Dank nochmal für die schnelle Hilfe.
    🙂
    Schöne Grüße
    Heike


Anmelden zum Antworten