绘图性能优化专题

1、绘制时机优化

问题:

把读图像文件的方法放在了OnDraw之中,发现拖动滚动条闪烁的很严重,原因在于ScrollBar拖动时会产生消息激活OnDraw,这样的话,每拖动滚动条就读一次文件,重绘一次,效率低下

解决方案:

更换图像后调用UpdateAllViews,内存DC的绘制都放在OnUpdate中操作,在内存绘制好后再在屏幕中贴图。

 
m_pOldBitmap = m_memDC.SelectObject(&m_memBitmap);
m_memDC.FillSolidRect(0,0,2000,2000,RGB(100,100,100));
 
CString pStrFullPath = pDoc->m_pStrPath + pDoc->m_pStrName;
USES_CONVERSION;
LPWSTR lpwStr = A2W(pStrFullPath);
Image img(lpwStr);
pDoc->m_nWidth = img.GetWidth();
pDoc->m_nHeight = img.GetHeight();
Graphics g(m_memDC.GetSafeHdc()); //此处只有为了试验GDI+,完全可以直接使用GDI来绘制
g.DrawImage(&img,25,55,img.GetWidth(),img.GetHeight());
 
m_memDC.SelectObject(m_pOldBitmap);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值