我的问题是:在内存 DC 中选择一个 alpha 位图后,然后使用 DrawText 功能,但文本无法显示。
代码如下:
CDC memDC;
memDC.CreateCompatibleDC(&dc);
memBitmap.CreateCompatibleBitmap(&dc,64,100);
CBitmap *oldmemBitmap=(CBitmap*)memDC.SelectObject(&memBitmap);
CDC memDC1;
memDC1.CreateCompatibleDC(&dc);
//m_bitmap has alpha channel 64*64
CBitmap *oldmemBitmap1=(CBitmap*)memDC1.SelectObject(&m_bitmap);
memDC.BitBlt(0, 0, 64, 64, &memDC1, 0, 0, SRCCOPY);
CString str = _T("TEST");
memDC.DrawText(str,str.GetLength(),CRect(0,64,64,36),DT_CENTER|DT_WORDBREAK|DT_NOCLIP);
memDC.SelectObject(oldmemBitmap);
BITMAP bmpData;
memBitmap.GetBitmap(&bmpData);
CImageList imageList;
imageList.Create(bmpData.bmWidth, bmpData.bmHeight, ILC_COLOR32|ILC_MASK, 0, 1);
imageList.Add(&memBitmap, RGB(0, 0, 0));
POINT pt = {0, 0};
imageList.Draw(&dc, 0, pt, ILD_NORMAL);
m_bitmap 可以正常显示,但“TEST”字符串不能。当我注释 memDC.BitBlt(...) 时,可以显示“TEST”字符串。为什么?