Win32双缓冲绘图和位图的绘制

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

目的:

原因是绘图(前景)与显示器(背景)刷新不同步,有时间差,眼睛看上去好像在闪烁。为解决这一问题,这就需要用到双缓冲技术来绘图了。双缓冲技术是相对单缓冲而言的,单缓冲就是直接在设备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)转换,以传送到目标设备环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值