我似乎无法将CBitmap实际显示在屏幕上......这是OnPaint中的代码:
CRect frm;
GetClientRect(frm);
CClientDC dc(this);
//dc.FillSolidRect(CRect(0, 0, 1000, 1000), RGB(255, 255, 255));
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap* cache = dcMem.SelectObject(&components.icon.bmp);
dc.BitBlt(0, 0, 55, 55, &dcMem, 0, 0, SRCCOPY);
dc.SelectObject(cache);
components.icon.bmp的定义是......
components.icon.bmp.LoadBitmap(BMP_BOARDER);
BITMAP icon;
components.icon.bmp.GetBitmap(&icon);
这里应该没有问题。位图是一个32位的alpha位图,LoadBitmap返回TRUE。
它也不适用于24位。
----知道了!资源问题
答案 0 :(得分:0)
这段代码对我来说似乎不错,但仍有很多事情可能是错的。测试代码以了解问题所在: - 如果你绘制任何其他东西(例如一个矩形)它是否出现在框架窗口上? - 尝试将bmp保存到文件中,看看是否正常。 - 尝试使用工具将bmp转换为24位,看看它是否有效。
一旦你知道问题出在哪里,你就可以专注于这个问题。
你可能无法使用GDI绘制32位bmp,但你应该得到一些东西(至少是一个黑色方块)。无论如何,如果你需要使用GDI绘制32位alpha通道bmps,你必须预先乘以图像并使用AlphaBlend
方法而不是BitBlt。