Gewusst wie: zeichnen von text mit transparentem hintergrund mit c++/WinAPI?

How to draw text mit transparenten Farben mit der WinAPI?
In der üblichen Weise, die ich verwendet SetBkMode(hDC, TRANSPARENT), aber jetzt muss ich mit einem doppelten Puffer.
Auf diese Weise Bilder zieht richtig, aber der text zieht nicht richtig (mit schwarzem hintergrund).

case WM_PAINT:
{
    hDC = BeginPaint(hWnd, &paintStruct);
    SetBkMode(hDC, TRANSPARENT);

    HDC cDC = CreateCompatibleDC(hDC);
    HBITMAP hBmp = CreateCompatibleBitmap(hDC, width, height);
    HANDLE hOld = SelectObject(cDC, hBmp);

    HFONT hFont = (HFONT)SelectObject(hDC, font);
    SetTextColor(cDC, color);
    SetBkMode(cDC, TRANSPARENT);

    TextOut(cDC, 0, 0, text, wcslen(text));

    SelectObject(cDC, hFont);

    BitBlt(hDC, 0, 0, width, height, cDC, 0, 0, SRCCOPY);

    SelectObject(cDC, hOld);
    DeleteObject(hBmp);
    DeleteDC(cDC);

    EndPaint(hWnd, &paintStruct);
    return 0;
}

InformationsquelleAutor Alexander | 2012-09-18

Schreibe einen Kommentar