怎样解决频繁绘图导致CPU过高

cnnwm 2007-08-10 10:04:45
我现在的处理是每按下一次键就把界面更新一次。。但是如果一直按下键的时候,CPU会很高。但如果按下不更新或者隔一段时间更新的话,又达不到及时显示的效果
请问要如何做啊。。。
...全文
201 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnnwm 2007-08-10
  • 打赏
  • 举报
回复
代码帖出来
BOOL CClientDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_LEFT:
{
m_ELSLogic.MoveLeft();//左移
OnKeyMove();
InvalidateRect(m_UpdateMeRect);
break;
}
case VK_RIGHT:
{
m_ELSLogic.MoveRight();//右移
OnKeyMove();
InvalidateRect(m_UpdateMeRect);
break;
}
case VK_UP:
{
m_ELSLogic.TurnLeft();//左旋转
OnKeyMove();
InvalidateRect(m_UpdateMeRect);
break;
}
case VK_DOWN:
{
m_ELSLogic.MoveDownAddSpeed();//下落加速
OnKeyMove();
InvalidateRect(m_UpdateMeRect);
break;
}
}
return CDialg::PreTranslateMessage(pMsg);
}
当我很快的按这四个键的时候CPU会达到100% 而不按的时候很正常
把InvalidateRect(m_UpdateMeRect);去掉后很快的按就很正常。。
但没有这句,如果键盘按的比较快的话。。会更新的不及时。。
我想是刷新的问题。。
有什么办法能降低CPU啊。。。。
cnnwm 2007-08-10
  • 打赏
  • 举报
回复
不好意思 。。没有分了。。所以没法给了。。
还是希望有人帮忙啊
菜牛 2007-08-10
  • 打赏
  • 举报
回复
基本上没有根本解决的办法,因为需要这么高的占用率。
可以从绘图优化上着手降低一些CPU占用率,比如使用双缓冲,预先创建和加载需要的资源,InvalidateRect(m_UpdateMeRect, FALSE);仔细计算这个m_UpdateMeRect到最小。总的方法是通过计算减少绘图量。另外在普通的代码优化方面也不能忽视,比如重复创建、销毁对象等。

15,979

社区成员

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

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