菜鸟继续求助 (移动曲线的背景网格时,出现闪屏)

Watchmen_ 2012-06-08 11:27:59

做了一个绘制曲线的小程序,绘制曲线区域做了背景网格。

背景网格随着曲线的时间轴移动。

用了双缓存,但是背景网格移动的时候,还是闪屏。

求高手指点。
...全文
126 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-03-07
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
Watchmen_ 2012-06-17
  • 打赏
  • 举报
回复
最后没有解决!!好失望啊!
罗平 2012-06-08
  • 打赏
  • 举报
回复
不要使用 Invalidate 更新,网格移动时,重新画曲线,画背景,直接贴上去。
Watchmen_ 2012-06-08
  • 打赏
  • 举报
回复
BOOL CMyView::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}

没有使用Invalidate()函数。

Watchmen_ 2012-06-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
1,OnEraseBkgnd()中直接 return TRUE。
2,曲线画在背景上,背景和曲线一起BitBlt。
[/Quote]

是的,就是这么做的。运行时感觉是Windows刷屏的频率低,移动部分出现轻微扭曲。
罗平 2012-06-08
  • 打赏
  • 举报
回复
1,OnEraseBkgnd()中直接 return TRUE。
2,曲线画在背景上,背景和曲线一起BitBlt。
Watchmen_ 2012-06-08
  • 打赏
  • 举报
回复
将屏幕拷贝到缓存中,拷贝时移动屏幕图片的位置

,然后再将缓存中的图片拷贝到屏幕上。

OnEraseBkgnd()也使用了。
Watchmen_ 2012-06-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
贴程序看看。不知道你是如何移动的?背景擦除有无处理?
[/Quote]

pDC->BitBlt(0,0,rect.Width(),rect.Height(),dc1,0,0,SRCCOPY);

dc1->BitBlt(-b,0,rect.Width(),rect.Height(),pDC,0,0,SRCCOPY);

Watchmen_ 2012-06-08
  • 打赏
  • 举报
回复
上面写错了,时间是10ms移动一个步长。
罗平 2012-06-08
  • 打赏
  • 举报
回复
贴程序看看。不知道你是如何移动的?背景擦除有无处理?
Watchmen_ 2012-06-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinatcp 的回复:]
不要使用 Invalidate 更新,网格移动时,重新画曲线,画背景,直接贴上去。
[/Quote]

现在没有用Invalidate 更新,我设置的网格0.1ms移动一个步长,这时候网格线闪的厉害。

麻烦“平凡”给具体的说一下,谢谢!!

15,979

社区成员

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

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