CreateCompatibleDC与BitBlt 学习
CreateCompatibleDC与BitBlt
创建一个与指定设备一致的内存设备描述表。
HDC CreateCompatibleDC(HDC hdc //设备描述表句柄);
参数 hdc
现有的设备描述表的一个句柄,如果这个句柄为NULL,则函数创建一个和应用程序当前屏幕一致的内存设备描述表。
返回值 如果函数调用成功,则返回一个内存设备描述表句柄;否则返回NULL。
说明 | |
创建一个与特定设备场景一致的内存设备场景 | |
返回值 | |
Long,新设备场景句柄,若出错则为零 | |
参数表 | |
参数 | 类型及说明 |
hdc | Long,设备场景句柄。新的设备场景将与它一致。也可能为0以创建一个与屏幕一致的设备场景 |
注解 | |
在绘制之前,先要为该设备场景选定一个位图。不再需要时,该设备场景可用DeleteDC函数删除。删除前,其所有对象应回复初始状态 |
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();
这是清理和回收内存的!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?