现在我正在开发一个使用 GDI 在屏幕上绘制文本的遗留产品。现在我尝试使用 DirectWrite 来绘制文本以获得更好的外观和字体的准确性。我很好奇以前有人做过吗?我遇到一个问题,当我使用 DirectWrite 在 GDI hdc 上绘制文本时,背景颜色总是白色,我需要透明背景,可以吗?看来 SetBkMode 没用
示例代码如下,
SetBkMode(hdc, TRANSPARENT); //hDC is the target GDI dc
SIZE size = {};
HDC memoryHdc = NULL;
memoryHdc = g_pBitmapRenderTarget->GetMemoryDC();
SetBkMode(memoryHdc, TRANSPARENT);
hr = g_pBitmapRenderTarget->GetSize(&size);
Rectangle(memoryHdc, 0, 0, size1.cx , size1.cy );
if (SUCCEEDED(hr)) {
hr = g_pTextLayout->Draw(NULL, g_pGdiTextRenderer, 0, 0);
}
BitBlt(hdc, x, y, width + 1, height + 1, memoryHdc, 0, 0, SRCCOPY | NOMIRRORBITMAP);