MFC中CreateCompatibleDC的作用

为什么要用此函数来生成一个兼容DC来存放CBitmap对象? 而不是直接把位图存进CDC类的对象中?


WindowsGDI的接口没提供这样的功能机制,只能是先通过CreateCompatibleDC 创建一个与显示器设备内容兼容的内存设备内容,用SelectObject将位图选入内存设备内容,再用BitBlt函数进行从内存到显存的位块传输。 

DC是设备内容,是我们问题的核心,请看《Windows程序设计》关于设备内容的讲解:
设备内容:
设备内容中包含许多确定GDI函数如何在设备上工作的目前「属性」,这些属性允许传递给GDI函数的参数只包含起始坐标或者尺寸信息,而不必包含Windows在设备上显示对象时需要的所有其它信息。例如,呼叫TextOut时,您只需要在函数中给出设备内容 句柄 、起始坐标、文字和文字的长度。您不必指定字体、文字颜色、文字后面的背景色彩以及字符间距,因为这些属性都是设备内容的一部分。当您想改变这些属性之一时,您呼叫一个可以改变设备内容中属性的函数,以后针对该设备内容的TextOut呼叫来使用改变后的属性。
内存设备内容:

设备内容指的是特殊的图形输出设备(例如显示器或者打印机)及其设备驱动程序。而内存设备内容只位于内存中,它不是真正的图形输出设备,但可以说与指定的真正设备「兼容」。也就是说内存设备内容具有和显示器设备内容相同的结构,也存放与屏幕显示相关的信息。

另外书中还说:内存设备内容是您可以选进位图的唯一一种设备内容型态。也就是说,我们不能够调用SelectObject(显示器设备内容句柄, 位图句柄)直接将位图选入显示器设备内容


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值