洛阳网站建设 恒凯科技,微信小程序怎么做表格,静态网页是什么,物流托运1、双缓冲的技术原理#xff1a; 在Windows中每一种设备都在内存中有一个设备描述表与其对应#xff0c;这个设备描述表实际上就是一个内存缓冲区。 传统的绘图是单缓冲#xff0c;将图形绘制在设备描述表缓冲区中#xff0c;然后由gdi自动的将设备描述表中的图像拷贝到显存…1、双缓冲的技术原理 在Windows中每一种设备都在内存中有一个设备描述表与其对应这个设备描述表实际上就是一个内存缓冲区。 传统的绘图是单缓冲将图形绘制在设备描述表缓冲区中然后由gdi自动的将设备描述表中的图像拷贝到显存中。
采用双缓冲绘图是在内存中有两片缓存除了设备描述表以外还有一个需要手动建立的与设备描述表缓冲区前端缓冲区相兼容的后备缓冲区
绘图过程中首先将图形绘制在后备缓冲区中然后再手动将后备缓冲区中的图像拷贝到前端缓冲区中再由gdi自动将前端缓冲区中的图像拷贝到显存完成图像的显示过程。双缓冲绘图的目的是为了解决屏幕闪烁问题
2、实现步骤
创建与窗口设备描述表 前端缓冲区兼容的内存设备描述表后备缓冲区创建与内存设备描述表相兼容的位图并将位图选入内存设备描述表没有位图的设备描述表是不能绘图的将图形绘制再内存设备描述表中将内存设备描述表中的内容拷贝到窗口设备描述表释放设备描述表句柄、位图等资源
3、举例
这里的pDC是窗口设备描述表前端缓冲区
MemDC是手动创建的一个内存设备描述表后端缓冲区
通过BitBlt函数将后端缓冲区 手动拷贝到 前端缓冲区
CDC MemDC;//定义一个内存设备描述表对象即后备缓冲区
CBitmap MemBitmap;//定义一个位图对象MemDC.CreateCompatibleDC(NULL);//建立与窗口设备描述表前端缓冲区兼容的内存设备描述表句柄后备缓冲区
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);//建立与窗口设备描述表或者内存设备描述符兼容的位图
CBitmap *pOldBitMemDC.SelectObject(MemBitmap);//将位图选入到内存设备描述表
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));//用背景色将位图清除干净
MemDC.MoveTo(...);
MemDC.LineTo(...);
pDC-BitBlt(0,0,nWidth,hHeight,MenDC,0,0,SRCCOPY);//将后备缓冲区中的图形拷贝到前端缓冲区MemBitmap.DeleteObject();
MemDC.DeleteDC();
参考【学习总结】MFCCImagelist重绘双缓冲 - 灰信网软件开发博客聚合