MFC.CBitmapCreateCompatibleBitmap()根据传递给它的两个兼容CDC给出了不同的结果。CBitmapCreateCompatibleBitmap()根据传递给它的两个兼容CDC给出不同的结果?[重复]

问题描述 投票:1回答:1

为什么要把兼容的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!

winapi mfc device-context cbitmap
1个回答
1
投票

根据评论,请看一下以下内容 CreateCompatibleBitmap 文档。

注意:当一个内存设备上下文被创建时,它最初有一个 1乘1单色位图 选入其中。如果这个存储设备上下文被用于 CreateCompatibleBitmap,创建的位图是一个 单色位图. 要创建一个彩色位图,请使用用于创建内存设备上下文的HDC,如下面的代码所示......。

© www.soinside.com 2019 - 2024. All rights reserved.