Теперь я работаю над унаследованным продуктом, который использует GDI для рисования текста на экране. Теперь я пытаюсь использовать DirectWrite для рисования текста для лучшего внешнего вида и точности шрифта. Мне очень любопытно, что кто-нибудь сделал это раньше? Я встречаюсь с проблемой, что, когда я использую DirectWrite для рисования текста на hdc GDI, цвет фона всегда белый, мне нужен прозрачный фон, возможно ли это? кажется, что SetBkMode бесполезноКогда я использую DirectWrite для рисования текста на GDI hdc, как установить прозрачную заднюю поверхность?
примера код, как показано ниже,
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);
Здравствуйте, nekavally, спасибо за вашу помощь, я попробовал вашу идею, но она не работает, я не уверен в причине. Теперь я переключаюсь на использование прямого 2d api для рисования текста в GDI dc, он работает. – Southwind1984