画曲线图

图形显示控件常见的问题是界面用户刷新时的闪烁问题,为了消除闪烁,采用位图双缓冲显示技术。具体实现是:将显示内容绘制在一个内存位图对象上,用CDC::Bitblt()函数将位图直接输出,由于BitbltWindows系统中函数优先级较高,故可实现极快速的显示,消除闪烁。为操作方便,将双缓冲操作封装成一个CMemDC类负责内存位图的创建和显示输出。

CDC MemDC 定义一个显示设备对象

CBitmap MemBitmap  定义一个位图对象

MemDC.CreateCompatibleDC()创建一个指定设备兼容的内存设备上下文环境(DC

这时不能画图,因为没有地方画。

MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight)创建与指定的设备环境相关的设备兼容的位图。

CBitmap *pOldBit=MemDC.SelectObject&MemBitmap

将位图选入到内存显示设备中

只有选入了位图的内存显示设备才有地方画图,画到指定的位图上。

先用背景色将位图清除干净

MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255))

绘图

MemDC.MoveTo()

MemDC.LineTo()

将内存上的图拷贝到屏幕上并显示

pDC->Bitblt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY)

绘图完成后的清理

MemBitmap.DeleteObject()

MemDC.DeleteDC()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值