目的:
原因是绘图(前景)与显示器(背景)刷新不同步,有时间差,眼睛看上去好像在闪烁。为解决这一问题,这就需要用到双缓冲技术来绘图了。双缓冲技术是相对单缓冲而言的,单缓冲就是直接在设备DC上绘图;而双缓冲就是先在一个与设备DC相兼容的内存缓冲区里进行绘图,然后再一次性复制到设备DC上。一次性在屏幕上显示就不会出现闪烁的现象。
一、双缓冲技术的使用
双缓冲绘图步骤:
1.在内存中创建兼容DC缓冲区(依次包括创建兼容DCCreateComatibleDC、创建画布CreatrCompatibleBitnap、将画布选入SelectObject)。
2.在缓冲区进行画图操作(可以画图形、也可以贴位图)。
3.将兼容缓冲区一次性复制到设备DC上。(复制用Bitblt函数)
4.释放内存缓冲区。(DeleteDC函数)
几个关键API函数:
CreateCompatibleDC:
该函数创建一个与指定设备兼容的内存设备上下文环境(DC)
HDC CreateCompatibleDC(HDC hdc);
CreateCompatibleBitmap:
该函数创建与指定的设备环境相关的设备兼容的位图
HBITMAP CreateCompatibleBitmap(HDC hdc,
int nWidth, // 定位图的宽度,单位为像素
int nHeight);// 指定位图的高度,单位为像素
BitBlt:
BitBlt是一个计算机函数,该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境
消除闪烁:双缓冲技术在绘图中的应用

文章介绍了双缓冲技术用于解决显示器刷新与绘图不同步导致的闪烁问题。通过在内存缓冲区先绘图,再一次性复制到设备DC,避免了屏幕闪烁。关键步骤包括创建兼容DC缓冲区、在缓冲区画图、使用BitBlt复制到设备DC以及释放内存缓冲区。
最低0.47元/天 解锁文章
212

被折叠的 条评论
为什么被折叠?



