首页 > 编程知识 正文

gdb 函数,gdb调用函数

时间:2023-05-06 08:34:38 阅读:207281 作者:1998

在VC中显示位图常用BitBlt()函数,它是将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容。虽然此方法的功能是这样的,但是我一直没有理解网上一些例子代码,不知道其用到的各DC和位图之间的关系。

今天工作中要将位图显示到Dialog中,所以重要学习了一下。
我已经将要用的位图导入到工程资源中,所以我可以用   

CBitmapbitmap;bitmap.LoadBitmap(IDB_BITMAP_EIGHTHORSES);

这样得到一个CBitmap对象。然后,

BITMAPbmInfo;bitmap.GetBitmap(&bmInfo);

这样得到一个BITMAP对象,之所以要得到此对象是因为从其中可以得到位图的大小数据。
然后计算得到要在什么位置显示此位图(可以放在一个CRect对象中)。

然后显示此位图,这是最重要的一步。        

CDC dcMemory;dcMemory.CreateCompatibleDC(pDC);pOldBitmap = dcMemory.SelectObject(&bitmap);pDC->BitBlt(rect.left, rect.top, bmInfo.bmWidth, bmInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY);

其中pDC是一个CDC指针,是将要显示位图的设备环境。

这样位图就已经显示出来了,但是还要释放资源。

bitmap.DeleteObject();dcMemory.SelectObject(pOldBitmap);dcMemory.DeleteDC();


注意,要将临时设备环境选择入初始位图,否则将不能正确释放!!

总结:
要在目标设备环境中显示位图,不能直接在上面“画”(目前我是我么觉得的)。需要创建一个与之相兼容的临时设备环境,将位图选择入临时设备环境,然后再从临时设备环境中拷备位图以显示到目标设备环境中。而选入这个动作相当与已经将位图“画在了临时设备环境中”(实际上并没有画,否则就可以直接选入要画图的CDC了),而且选入后位图在临时设备环境中的位置是左上角!

效果:

代码下载:https://download.csdn.net/download/sunriver2000/12182822

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。