HDC und Backbuffer-Rendering



  • Warum funktioniert das nicht?
    [cpp]HDC hdc = GetDC(m_hwnd);
    HDC hdcBack = CreateCompatibleDC(hdc);

    SetPixel(hdcBack, 100, 100, RGB(255,0,0));

    BitBlt(hdc, 0, 0, screenWidth, screenHeight, hdcBack, 0, 0, SRCCOPY);

    DeleteDC(hdcBack);
    DeleteDC(hdc);[cpp]

    Wenn ich statt SRCCOPY WHITENES angebe, oder auf hdc zeichne, ist der Bildschirm doch auch weiß(bzw. mit Punkt). Aber nicht wenn ich einen Punkt auf hdcBack setze.

    Ich denke ich verstehe nicht was BitBlt macht! Nach meinem Verständnis sollte es den HDCBACK nach HDC kopieren... Kann mir jmd. auch noch Logical Unit erklären?


  • Mod

    Weil beim erzeugen Eines "compatible DC" nur eine Bitmap der Größe 1x1 erzeugt wird.

    Du müsstest also zuvor auch eine entsprechende Bitmap erzeugen und in den Memory-DC selektieren.

    Schau Dir doch mal etwas Code an, der Doublebuffering nutzt! Dann wird Dir das Verfahren klar.


Anmelden zum Antworten