gpt4 book ai didi

c++ - 如何使用 C++/WinAPI 绘制具有透明背景的文本?

转载 作者:可可西里 更新时间:2023-11-01 16:29:20 27 4
gpt4 key购买 nike

如何使用WinAPI绘制透明颜色的文本?通常我使用 SetBkMode(hDC, TRANSPARENT),但现在我需要使用双缓冲区。这样图像绘制正确,但文本绘制不正确(黑色背景)。

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;
}

最佳答案

SetBkMode(dc, TRANSPARENT) 应该仍然可以正常工作。确保在绘制到后台缓冲区时使用正确的 DC 句柄。

关于c++ - 如何使用 C++/WinAPI 绘制具有透明背景的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12479386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com