Backbuffer / Double-Buffering mit GDI+



  • Hi,

    ich hab jetzt im Vorfeld schon ne gewisse Vorarbeit geleistet, bin aber zu keinem wirklich guten Ergebnis gekommen und frag deshalb mal nach: Kann dieses schreckliche GDI+ denn kein Double-Buffering?

    In der WinAPI-FAQ ist ein Code-Snippet, das zeigt, wie man Double-Buffering mit den regulären GDI-Funktionen betreiben kann. Ziemlich umständlich! Geht das irgendwie hübsch OOP-Like?

    Danke.



  • hallo omgwtf

    Ich weiss nicht, in welcher sprache du schreibst, aberin C# gibt es verschiedene, einfache möglichkeiten.

    zum einen kannst du

    public Form1()
    {
    this.DoubleBuffered = true;
    }

    machen.

    Dann gibt es auch noch die klassen

    BufferedGraphicsContext bgc = BufferedGraphicsManager.Current;
    BufferedGraphics bg = bgc.Allocate(g, this.ClientRectangle);

    oder du machst im Paint event ein neues Bitmap, zeichnest alles da rein und zeichnest am am schluss da Bitmap 1 mal. So habi ch es gemacht und habe absolut null flickern.

    Hoffe dies hilft dir ein wenig.

    Gruss Roger



  • Hi,

    danke, aber leider hilft mir das nicht viel, weil ich mit C++ arbeite. Die zuletzt genannte Lösung lässt sich prinzipiell hier auf meine Mittel übertragen, ist aber leider auch die am wenigsten Schönste. 😉

    Dieses GDI+ ist aber irgendwie echt hässlich wie die Nacht. Manche Methoden brauchen Brushes, andere Pens. Für mich ist es unlogisch, da zu unterscheiden. Außerdem werden manche Parameter als Referenz, andere als Zeiger übergeben. Das Probelm dabei ist, dass Intellisense gerne rummuckt und man deshalb immer in der Doku nachsehen muss. 😡

    WinAPI 👎 👎


Anmelden zum Antworten