博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CreateCompatibleDC与BitBlt 学习
阅读量:4667 次
发布时间:2019-06-09

本文共 1257 字,大约阅读时间需要 4 分钟。

CreateCompatibleDC与BitBlt

CreateCompatibleDC

创建一个与指定设备一致的内存设备描述表。

HDC CreateCompatibleDC(HDC hdc //设备描述表句柄);

参数 hdc

现有的设备描述表的一个句柄,如果这个句柄为NULL,则函数创建一个和应用程序当前屏幕一致的内存设备描述表。

返回值 如果函数调用成功,则返回一个内存设备描述表句柄;否则返回NULL。

说明
创建一个与特定设备场景一致的内存设备场景
返回值
Long,新设备场景句柄,若出错则为零
参数表
参数 类型及说明
hdc Long,设备场景句柄。新的设备场景将与它一致。也可能为0以创建一个与屏幕一致的设备场景
注解

在绘制之前,先要为该设备场景选定一个位图。不再需要时,该设备场景可用函数删除。删除前,其所有对象应回复初始状态

BitBlt( //图形拷贝

  HMDC0, //目标设备场景
  x0,y0 //目标左上角坐标
  w,h //目标图形宽、高
  HMDC1, //源设备场景
  x1,y1 //源左上角坐标
  SRCCOPY //拷贝方式,这里是直接拷贝);

使用方法:

CreateCompatibleDC

CDC MemDC;//首先定义一个显示设备对象

CBitmap MemBitmap;//定义一个位图对象

//随后建立与屏幕显示兼容的内存显示设备

MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有地方画^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
CRect rc;
GetClientRect(&rc);

MemBitmap.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());

//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap* pOldBit=MemDC.SelectObject(&MemBitmap);

//先用背景色将位图清除干净,这里我用的是白色作为背景

//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,rc.Width(),rc.Height(),RGB(255,255,255));

......//一些绘制过程

//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,rc.Width(),rc.Height(),&MemDC,0,0,SRCCOPY);

//绘图完成后的清理

MemBitmap.DeleteObject();
MemDC.DeleteDC();

尤其是最后两部:

MemBitmap.DeleteObject();
MemDC.DeleteDC();
这是清理和回收内存的!

转载于:https://www.cnblogs.com/kanego/p/3584144.html

你可能感兴趣的文章
汇编语言第一章
查看>>
centos 新建swap区文件
查看>>
Python
查看>>
UOJ 7 NOI2014 购票
查看>>
HDU1828 Picture 线段树+扫描线模板题
查看>>
利用jQuery点击DIV变颜色的小例子
查看>>
OpenStack Cinder发展动态系列--Austin峰会
查看>>
MySQL -- 行转列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)
查看>>
CSS魔法堂:hasLayout原来是这样!
查看>>
JS获取JSON对象数组某个属性最大值
查看>>
教程链接
查看>>
Spring MVC 文件上传 & 文件下载
查看>>
C++中print和printf的区别
查看>>
service程序改为windows窗体展示
查看>>
查询集 QuerySet
查看>>
ios 键盘的一些问题
查看>>
mac上使用终端生成RSA公钥和密钥
查看>>
jQuery-点击按钮页面滚动到顶部,底部,指定位置
查看>>
[原创]group by和compute 的使用
查看>>
9.13列表的用法
查看>>