Làm thế nào để vẽ văn bản bằng màu trong suốt bằng WinAPI? Theo cách thông thường, tôi đã sử dụng SetBkMode (hDC, TRANSPARENT), nhưng bây giờ tôi cần phải sử dụng bộ đệm đôi. Bằng cách này, hình ảnh vẽ chính xác, nhưng văn bản rút ra không chính xác (với nền đen).Làm thế nào để vẽ văn bản với nền trong suốt bằng cách sử dụng c + +/WinAPI?
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;
}
Cách này hoạt động) Không như tôi mong đợi, nhưng hoạt động. một số vùng có nền đen, nhưng tôi nghĩ, tôi có thể sửa chúng. – Alexander