HDC hmemdc = ::CreateCompatibleDC(dc);
HBITMAP hbmp = ::CreateCompatibleBitmap(dc,....);
HBITMAP holdbmp =(HBITMAP)::SelectObject(hmemdc,hbmp);此時,我通過:
::BitBlt(hmemdc,....,dc,....,SRCCOPY); //將內容blt到hmemdc中
或者 我在hmemdc中進行畫圖操作......
MoveTo(hmemdc,...); LineTo(hmemdc,...);最後執行清除工作
::SelectObject(hmemdc,holdbmp);
::DeleteObject(hmemdc);
執行上面所有代碼後:
1.此時hbmp是否還有位圖數據,為什麼?
2.SelectObject( )函數的作用是什麼: 即為什麼要選擇對象到設備環境?
SelectObject( )後,所有的操作是在hbmp上還是在hmemdc上進行?
HBITMAP hbmp = ::CreateCompatibleBitmap(dc,....);
HBITMAP holdbmp =(HBITMAP)::SelectObject(hmemdc,hbmp);此時,我通過:
::BitBlt(hmemdc,....,dc,....,SRCCOPY); //將內容blt到hmemdc中
或者 我在hmemdc中進行畫圖操作......
MoveTo(hmemdc,...); LineTo(hmemdc,...);最後執行清除工作
::SelectObject(hmemdc,holdbmp);
::DeleteObject(hmemdc);
執行上面所有代碼後:
1.此時hbmp是否還有位圖數據,為什麼?
2.SelectObject( )函數的作用是什麼: 即為什麼要選擇對象到設備環境?
SelectObject( )後,所有的操作是在hbmp上還是在hmemdc上進行?
解决方案 »
- MFC界面上如何做 Add 按钮,让输入的几条记录形成列表样式
- mfc中如何判断是否读取了一个文件。
- 读文件夹中记事本的方法?
- 有关于listctrl行的隐藏
- 问单文档多视图的一种实现方法
- 一个基于对话框的程序,怎么样在启动之后马上最小化
- 请大家帮帮忙,一个ADO连接的问题
- 高手们进来看看,这是什么错误啊。
- 各位大哥、大姐救命呀!!win2k下CMOS里面的数据怎么读出来,这方面的程序我没接触过,要看什么参考书?这100分送完还会加分,直到小弟倾家
- vs2008 MFC serialport类的ModBus上位机通讯程序发送时端口异常关闭问题
- CE 或PPC 爱好者请进,看看这是什么控件??
- CWebBrowser2的用法
内存DC(CreateCompatibleDC)总是和一个位图(HBITMAP)关联,在内存DC上绘图都画在关联的位图上,因为关联的位图在内存中,所以叫内存DC。SelectObject(HBITMAP)的作用是设置内存DC当前关联的位图是hbmp,执行之后,所有绘图操作,都画在hbmp,直到SelectObject另外一个位图为止。 所有的绘图操作由hmemdc进行(驱动程序),而hbmp只是记录操作的结果,可以理解为dc把图画在当前关联的hbmp上。
2.SelectObject()函数的作用是把一个DC属性,指定给特定的DC。DC实际上是一个虚概念,
你可以简单理解成,一个人(DC)想画画,他就需要有张纸(Bitmap),有支笔(Pen),有画刷(Brush),写字要有字体(Font),然后就可以开始做图(LineTo(),TextOut());所有画出来的东西都在纸上。这张画可以被另一个人COPY过去,就用BitBlt函数来实现。
3.SelectObject( )後,hbmp就已经不存在了,所有操作都与它无关了。