Winapi MFC:CBitmapCreateCompatibleBitmap()基于两个兼容的CDC给出不同的结果';它被传给了吗?

Winapi MFC:CBitmapCreateCompatibleBitmap()基于两个兼容的CDC给出不同的结果';它被传给了吗?,winapi,mfc,gdi,cbitmap,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); // ...

为什么将兼容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);

蒂娅

根据评论,查看文档:

注意:创建内存设备上下文时,它最初会在其中选择一个单色位图。如果在
CreateCompatibleBitmap
中使用此内存设备上下文,则创建的位图为单色位图。要创建彩色位图,请使用用于创建内存设备上下文的HDC,如以下代码所示


见下面的评论。我记得20年前dxiv指出的咬我的问题。。。进行win32/MFC开发的技巧:首先,比如说,使用API调用5-10次,从头到尾阅读相应的MSDN文章。这看起来可能需要很多时间,而且会的,但是会有回报的——几乎每个电话都有很多隐含的假设和背景知识。但是文档是一流的,经常阅读并熟悉它是能够使用API的关键。