winapi - MFC:CBitmapCreateCompatibleBitmap() 根据传递给它的两个兼容的 CDC 给出不同的结果?

标签 winapi mfc gdi cbitmap

为什么要将兼容的 DC 以及兼容 DC 所基于的 DC 传递给 CreateCompatibleBitmap()给出不同的结果?

这创建了一个单色位图:

CDC dcMem; 
dcMem.CreateCompatibleDC(mydc);
destBitmap->CreateCompatibleBitmap(&dcMem, rect.Width(), rect.Height());
CBitmap* pBmpOld = dcMem.SelectObject (destBitmap);
// ... Draw on to the DC ....
dcMem.SelectObject (pBmpOld);

这创建了正确的颜色位图:

CDC dcMem; 
dcMem.CreateCompatibleDC(mydc);
destBitmap->CreateCompatibleBitmap (mydc, rect.Width(), rect.Height());
CBitmap* pBmpOld = dcMem.SelectObject (destBitmap);
// ... Draw on to the DC ....
dcMem.SelectObject (pBmpOld);

TIA!!

最佳答案

根据评论,看看 CreateCompatibleBitmap文档:

Note: When a memory device context is created, it initially has a 1-by-1 monochrome bitmap selected into it. If this memory device context is used in CreateCompatibleBitmap, the bitmap that is created is a monochrome bitmap. To create a color bitmap, use the HDC that was used to create the memory device context, as shown in the following code ...

关于winapi - MFC:CBitmapCreateCompatibleBitmap() 根据传递给它的两个兼容的 CDC 给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61764469/

相关文章:

visual-studio-2008 - 如何设置dll的图标?

c++ - 防止我的应用程序的多个实例

c++ - Windows GDI 上下文 - 函数失败并且 GetLastError() 返回 0

c++ - 从 COLORREF[] 中绘制 DeviceContext

delphi - 如何处理WM_ERASEBKGND以避免闪烁?

c - 使用 _tprintf 错误地打印出二进制文件

c++ - 从 TCHAR 数组获取文件扩展名?

winapi BN_CLICKED如何识别单击了哪个按钮?

c++ - MFC DDX_Radio 在调用 DoDataExchange 时导致调试断言失败(dlgdata.cpp 第 286 行)

c++ - 2个项目的解决方案无法编译