[BitBlt] Inhalt eines verstecken Fenster kopieren



  • Hallo,

    ich hab gleich das nächste Problem. Ich zeichne in ein verstecktes Fenster und will den Inhalt dann in ein anderes sichtbares Fenster kopieren. Dafür benutze ich BitBlt(). Allerdings bekomme ich dann immer den Vordergrund des verstecken Fensters, also einen Ausschnitt aus dem Desktop, hinter dem sich des Fenster gerade versteckt.

    Wenn ich mein verstecktes Fenster im Vordergrund zeige, dann klappt's prima, aber sobald es verdeckt wird oder sich versteckt, wird wie gesagt der Vordergrund kopiert.

    Wie kann man die versteckten DCs kopieren?



  • Das geht meines bescheidenen Wissens nach nicht: Das Fenster in das du zeichnest ist nicht sichtbar, also wird theoretisch auch nichts gezeichnet. Darum kannst du da nichts sinnvolles finden, wenn du den Inhalt rauskopieren willst. Ausserdem musst du immer neu zeichnen, wenn das Gezeichnete von etwas anderem überlagert wird (der Inhalt wird überschrieben). Die Lösung wäre, in eine Bitmap zu zeichnen und dann von dort aus zu kopieren.



  • Also die Variante mit einem DIB hab ich umgesetzt, aber sie ist relativ langsam. Wenn ich ein sichbares Fenster nehme, ist das Zeichnen schon wesentlich schneller, aber leider auch sichtbar. 😉



  • MemoryDC (sprich: CreateCompatibleDC, CreateCompatibleBitmap, etc.) ?



  • Bin noch nicht richtig vorangekommen. Ich zeichne ein Bild (OpenGL) in einen DC und möchte das dann in ein Fenster kopieren. Danach werden nocht andere Zeichenoperationen auf dem Fenster ausgeführt.

    (1) Der Ansatz mit einem MemoryDC funktioniert, aber ist zu langsam.
    (2) Der Ansatz mit einem Window- bzw. ClientDC ist wesentlich schneller. Allerdings kann das Zeichen dann nicht mehr im Hindergrund durchgeführt werden.

    Gibt es noch alternativen zu diesen beiden Wegen?



  • Hab eine Lösung gefunden: 😃

    Ich zeichne des Bild in ein verstecktes Fenster, und hole es mir mit glReadPixels().
    Muss allerdings nocht etwas an den Paramtern drehen, da die Farben nicht ganz stimmen und das Bild gekippt ist. 😉

    Gruß,
    don_basto.


Anmelden zum Antworten