всё работает нормально, до тех пор пока не начинаю использовать маленький шрифт. с маленьким шрифтом цвет маски прозрачности просачивается в фон (см. скриншот).
1) маленький шрифт (проблема)!

2) обычный шрифт (всё в порядке)

Код:
Код | RECT rc = {0};
rc.right = rc.bottom = 32;
HDC dc = GetDC(NULL);
HDC dc_buff = CreateCompatibleDC(dc); HDC dc_mask = CreateCompatibleDC(dc);
HBITMAP bitmap = CreateDIBSection(dc, &bmi, DIB_RGB_COLORS, NULL, NULL, 0); HBITMAP bitmap_mask = CreateBitmap(rc.right, rc.bottom, 1, 1, NULL);
HBITMAP old_bitmap = (HBITMAP)SelectObject(dc_buff, sd.bitmap);
// draw transparent background mask FillRect(dc_buff, &rc, CreateSolidBrush(RGB(255, 0, 255)));
// draw text SetTextColor(dc_buff, RGB(255, 255, 255)); SetBkMode(dc_buff, TRANSPARENT);
DrawTextEx(dc_buff, L"xD", 2, &rc, DT_VCENTER | DT_CENTER | DT_SINGLELINE | DT_NOCLIP, NULL);
// create transparent mask HBITMAP old_mask = SelectObject(dc_mask, sd.bitmap_mask);
SetBkColor(dc_buff, COLOR_TRAY_MASK); BitBlt(dc_mask, 0, 0, sd.rc.right, sd.rc.bottom, dc_buff, 0, 0, SRCCOPY);
SelectObject(dc_mask, old_mask); SelectObject(dc_mask, old_bitmap);
|
|