我在CScrollView里画位图,很闪,200分求解决方案

emmai 2003-03-19 11:05:01
位图很大,有放大,缩小和移动功能
放大和缩小时,客户区都要闪一下
迅速拖动图片时,客户区边缘闪个不停
我用的是stretchblt,求解决方案

(有人说用双缓冲可以解决,那么怎么实现呢?)
不需要完整代码,最好有完整思路
...全文
20 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
henryzc 2003-03-20
  • 打赏
  • 举报
回复
怎么都是这个问题,你去下面看看
http://expert.csdn.net/Expert/topic/1542/1542468.xml?temp=.4727747
zhongxd 2003-03-19
  • 打赏
  • 举报
回复
视图crete()函数中
建立一个屏幕DC m_hDC=::GetDC(m_hDC);
建立一个内存DC m_hMDC=::CreateCompatibleDC(m_hDC),
OnSize()函数中
建立一个屏幕大小位图m_hMBm=::CreateCompatibleBitmap(m_hDC,m_wScreen,m_hScreen);
// m_wScreen屏幕宽度 m_hScreen 屏幕高度
//如果有位图存在先删除,然后建立
放大缩小的时候,或者进行绘制操作的时候 先将屏幕上的内容写到m_hMDC中去
然后再用::BitBlt(m_hDC,0,0,m_wScreen,m_hScreen,m_hMDC,0,0,SRCCOPY);将m_hMDC中的内容贴到m_hDC中去。
析构函数中
::ReleaseDC(m_hWnd,m_hDC);
::DeleteDC(m_hMDC);
::DelelteBitmap(m_hMBm);


AloneWolf 2003-03-19
  • 打赏
  • 举报
回复
用MemDC,在OnEraseBkgnd(CDC* pDC)中画,返回TRUE,
部分更新时用InvalidateRect
RomanticProgrammer 2003-03-19
  • 打赏
  • 举报
回复
在画图时不要全部重画,用CDC::GetClipBox的到无效区域,只剪贴这个矩形就可以了。
《MFC windows程序设计》上面专门讲了这个。看看吧。。
emmai 2003-03-19
  • 打赏
  • 举报
回复
ding
emmai 2003-03-19
  • 打赏
  • 举报
回复
printf("ding");
emmai 2003-03-19
  • 打赏
  • 举报
回复
哎,我照你们的方法做了,可是还是很闪。
能不能给个不闪的例子?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧