我正在尝试在 MFC 应用程序中进行一些双缓冲,并尝试使用 GDI+ 在内存 DC 上进行绘制。然而,虽然我调用了 CreateCompatibleDC(),但我只得到了一个单色图像。这是代码:

CDC bufferDC;
CBitmap bufferBitmap;
bufferDC.CreateCompatibleDC(&dc);
bufferBitmap.CreateCompatibleBitmap(&bufferDC, 300, 300);
bufferDC.SelectObject(bufferBitmap);
Graphics g(bufferDC);
g.Clear(Color::Green);
dc.BitBlt(0, 0, 300, 300, &bufferDC, 0, 0, SRCCOPY);

我看到的是一个由抖动的黑白点组成的矩形,而不是绿色补丁。我什至尝试在 g.Clear() 调用后将位图保存到磁盘。它确实是一个 1 位深度的文件。

任何想法出了什么问题?谢谢。

最佳答案

一个常见的错误。内存 DC 具有选择到其中的位图的属性,无论它是用什么兼容性创建的。选择到 DC 中的默认位图是单色的。如果您创建与该 DC 兼容的位图,它也将是单色的。

创建与原始 DC 兼容的位图,而不是内存 DC。

关于c++ - GDI+ 只在内存 DC 上绘制单色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9318883/

10-10 13:33