请教CDC,CBitmap创建兼容DC的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教CDC,CBitmap创建兼容DC的用法相关的知识,希望对你有一定的参考价值。

我按照如下方式创建兼容DC进行绘图,在某些机器上偶尔CreateCompatibleBitmap会失败,有点怀疑是内存不足什么的,可是机器内存一般都是512m以上了怎么还会出这种问题呢?后续处理中需要加什么释放DC或者释放CBitmap对象之类的操作吗?

CDC m_MemDC; //成员变量,类对象被销毁时才被销毁
CBitmap m_Bitmap;

CClientDC dc(this);
m_MemDC.CreateCompatibleDC(&dc); //创建兼容DC
m_Bitmap.CreateCompatibleBitmap(&dc, 1024,768);
m_MemDC.SelectObject(&m_Bitmap);
为什么CreateCompatibleBitmap会失败呢?

CDC/CBitmap都不需要释放操作了,析构函数里有释放操作(DeleteObject
)

CBitmap* pBitmap m_MemDC.SelectObject(&m_Bitmap);
........
m_MemDC.SelectObject(pBitmap); //这里是必要的。
参考技术A 在调用SelectObject选择兼容位图时,要同时调用BiBlt将函数原始设备描述表的颜色及像素数据复制到兼容设备描述表

MFC中的DC CDC HDC由来由去理解

MFC中的DC CDC HDC由来由去理解

 

在此非常感谢博客主的究竟钻研,非常详细的参考资料:http://blog.csdn.net/yam_killer/article/details/7661449

以上是关于请教CDC,CBitmap创建兼容DC的用法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CBitmap 上使用具有透明背景的 CDC 绘制文本?

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

如何从 CRect 中的数据创建 CBitmap 对象?

请教一下mfc中bitblt各个参数的具体含义

GDI:原始 DC 位图更改,无法恢复

MFC中的DC,CDC和HDC