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());
636

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



