1

为什么通过兼容的 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);

蒂亚!!

4

1 回答 1

1

根据评论,请查看CreateCompatibleBitmap文档:

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

于 2020-05-13T04:36:51.467 回答