还是闪屏的老问题

hiyounger 2010-12-26 05:19:05
新手想做个小游戏,遇到了问题。Timer的频率一条高屏幕就闪得厉害。网上都说用OnEraseBkgnd的方法,道理懂,但不知道具体怎么做才好。
以前做过一个对话框的小游戏,SetTimer(1,15,NULL),屏幕也只有轻微的闪,这回用View,闪的太夸张了,要刷新的东西很少,估计还是OnEraseBkgnd的问题。求大神指导!最好不要讲到线程,还不太会用。


看过这个帖子,意思懂了,但改了几次都不行。
http://topic.csdn.net/u/20091012/14/2b948708-6d7b-498a-9806-a2adbd000c5d.html

部分代码
void CChildView::OnPaint()
{
CPaintDC dc(this);
SetTimer(1,250,NULL);
// 用于绘制的设备上下文
// TODO: 在此处添加消息处理程序代码

// 不要为绘制消息而调用 CWnd::OnPaint()
}

void CChildView::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC pDC(this);
OnEraseBkgnd(&pDC);
CWnd::OnTimer(nIDEvent);
}

BOOL CChildView::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
StartMenu(pDC); //一个画图的函数,里面东西不多
return TRUE;
//return CWnd::OnEraseBkgnd(pDC);
}
...全文
216 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangt1100 2010-12-26
  • 打赏
  • 举报
回复
在OnPaint函数里面设置定时器?画面每重画一次就设置一次定时器,这样行得通?建议还是用双缓冲吧,这才是解决闪屏的终极方法。
傻X 2010-12-26
  • 打赏
  • 举报
回复
关键是你画了点啥,是不是多步操作pDC,至少确保是用双缓存了
schlafenhamster 2010-12-26
  • 打赏
  • 举报
回复
“要刷新的东西很少”
在OnEraseBkgnd(CDC* pDC)中,画了什么?
StartMenu(pDC); //一个画图的函数,里面东西不多
hiyounger 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yangt1100 的回复:]
在OnPaint函数里面设置定时器?画面每重画一次就设置一次定时器,这样行得通?建议还是用双缓冲吧,这才是解决闪屏的终极方法。
[/Quote]

用了双缓存,确实不闪了,但里面的Settextcolor()怎么不起作用呢?
yangt1100 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hiyounger 的回复:]
而且闪烁的只是部分文字,画的线条和部分文字不会闪
[/Quote]

如果只是部分文字闪烁的话你可以看看这些文字是什么时候画上去的,是不是一直都在重画?还有,定时器设置一次就可以了,可以放在构造函数或初始化函数中,程序退出的时候再KillTimer。你的代码贴的太少了,我不知道闪烁的文字是不是在OnEraseBkgnd中画的。
hiyounger 2010-12-26
  • 打赏
  • 举报
回复
而且闪烁的只是部分文字,画的线条和部分文字不会闪
hiyounger 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yangt1100 的回复:]

在OnPaint函数里面设置定时器?画面每重画一次就设置一次定时器,这样行得通?建议还是用双缓冲吧,这才是解决闪屏的终极方法。
[/Quote]
另外我把定时器SetTimer换成在Mainframe里定义了,没什么改变
hiyounger 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yangt1100 的回复:]

在OnPaint函数里面设置定时器?画面每重画一次就设置一次定时器,这样行得通?建议还是用双缓冲吧,这才是解决闪屏的终极方法。
[/Quote]

我都是一些划线的函数,双缓存应该起不了什么作用吧,我觉得问题不在这。ontimer应该调用什么比较好呢?
操作画图的函数又应该在哪个函数里调用呢?

15,979

社区成员

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

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