关于WIN7 GDI 蛋疼的问题!!!

x858078 2012-01-17 02:26:57
用GDI做了一个游戏动画效果,在虚拟机的2003 XP系统下面都很流畅!!!

但是当把程序放到WIN7下面以后,就卡的要死!!!

向大家请教,这到底是什么原因!难道WIN7系统,还没有虚拟机下面的 2003 和XP 速度快?
...全文
738 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrliu8023 2014-09-05
  • 打赏
  • 举报
回复
//WIN7 支持 if ( CD2DEngine::GetD2DEngine() ) CD2DEngine::BeginDraw(this); 我最近在弄一个项目 里面有这句 你可以研究下 虽然一年多了
x858078 2013-01-23
  • 打赏
  • 举报
回复
感谢大家的帮助,还是没能找到最终的解决办法!!!
向立天 2012-03-06
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
SKINSE界面库 2012-01-29
  • 打赏
  • 举报
回复
查查是不是绘制太频繁了。。。
Lactoferrin 2012-01-21
  • 打赏
  • 举报
回复
你把uxsms服务停了再试一下
Kaile 2012-01-21
  • 打赏
  • 举报
回复
不用GDI,用可移植的图形库
x858078 2012-01-21
  • 打赏
  • 举报
回复
过年了,都没有人了!!!
x858078 2012-01-18
  • 打赏
  • 举报
回复
是的,是用贴图切换的!!!
x858078 2012-01-18
  • 打赏
  • 举报
回复

bool CGameClientView::OneWSM_bBig_Basaltic(bool OneWSM_bBig_Basaltic)
{
if (OneWSM_bBig_Basaltic == true)
{
//设置变量
m_OneWSM_bBig_Basaltic = true;
m_OneWSM_cbBig_Basaltic = 0;

//启动时间
SetTimer(IDI_BIG_BASALTIC, 30 ,NULL);
}
else
{
//停止动画
if (m_OneWSM_bBig_Basaltic == true)
{
//删除时间
KillTimer(IDI_BIG_BASALTIC);

//设置变量
m_OneWSM_bBig_Basaltic = false;
m_OneWSM_cbBig_Basaltic = 0;

//更新界面
//UpdateGameView(NULL);
}
}

return true;
}


int nCenterX = nWidth / 2;
int nCenterY = nHeight / 2;

if (m_OneWSM_bBig_Basaltic == true)
{
//绘画效果
int nXPos = nCenterX - 133;
int nYPos = nCenterY - 55;
INT nImageHeight=m_OneWSM_m_ImageBig_Basaltic.GetHeight();
INT nImageWidth=m_OneWSM_m_ImageBig_Basaltic.GetWidth()/BOMB_BIG_BASALTIC;
m_OneWSM_m_ImageBig_Basaltic.DrawImage(pDC,nXPos + 70,nYPos -275 - 17,nImageWidth,nImageHeight,
nImageWidth*(m_OneWSM_cbBig_Basaltic%BOMB_BIG_BASALTIC),0);

}

//转盘影子
if (nIDEvent == IDI_BIG_BASALTIC)
{
//停止判断
if (m_OneWSM_bBig_Basaltic == false)
{
UpdateGameView(NULL);
KillTimer(IDI_BIG_BASALTIC);
return;
}

//设置变量
if ((m_OneWSM_cbBig_Basaltic + 1) >= BOMB_BIG_BASALTIC)
{
//删除时间
KillTimer(IDI_BIG_BASALTIC);

//设置变量
m_OneWSM_bBig_Basaltic = false;
m_OneWSM_cbBig_Basaltic = 0;
}
else
{
m_OneWSM_cbBig_Basaltic++;
}

//更新界面
//UpdateGameView(NULL);

return;
}

fishion 2012-01-18
  • 打赏
  • 举报
回复
你的动画效果也是贴图切换的吧,看看代码
dylike 2012-01-17
  • 打赏
  • 举报
回复
检查windows服务中一个WPF加速缓存服务有无开启。
x858078 2012-01-17
  • 打赏
  • 举报
回复
把帖子顶上去,希望有人能给出解决方法!!!
x858078 2012-01-17
  • 打赏
  • 举报
回复
WIN7 WDDM

XP XPDM

那我如何在WIN7系统下面,继续沿用XP的GDI绘制风格呢?
x858078 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lgstudyvc 的回复:]

你的gdi控制好没有?
在任务管理里看看其增长情况
[/Quote]

第一次:CPU:%8
第二次:CPU: %11
第三次:CPU: %26
第四次:CPU: %38

之后就一直在35~40之间
lgstudyvc 2012-01-17
  • 打赏
  • 举报
回复
你的gdi控制好没有?
在任务管理里看看其增长情况
x858078 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xianglitian 的回复:]

引用 2 楼 x858078 的回复:
那如何在WIN7 下面,提升与XP一样的速度呢!!!

另外,是否与我没有使用多线程有关系?

我的意思是说在win7下观察那些操作导致问题
然后看看有没有替代方案
类似情况我也遇到过
xp下没问题
win7下就是不行
后来就是在win7下重写相关功能
然后会发现回到xp下也好用
这些东西应该与多线程无关
[/Quote]

发现在WIN7 下面绘制GDI的时候,CPU占用率很高!!!
x858078 2012-01-17
  • 打赏
  • 举报
回复
在虚拟机下面都不卡,放到WIN7主机下面,居然会卡成那样!!! 真的很无语!!!
Kaile 2012-01-17
  • 打赏
  • 举报
回复
做动画,感觉还是flash靠谱点, 或者用sdl库
x858078 2012-01-17
  • 打赏
  • 举报
回复
楼上那位兄弟说与WIN7下面的WDM有关!!!

我已经在WIN7重写了相关的实现!效果还是一个样子的!好奇怪!!!
向立天 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 x858078 的回复:]
那如何在WIN7 下面,提升与XP一样的速度呢!!!

另外,是否与我没有使用多线程有关系?
[/Quote]
我的意思是说在win7下观察那些操作导致问题
然后看看有没有替代方案
类似情况我也遇到过
xp下没问题
win7下就是不行
后来就是在win7下重写相关功能
然后会发现回到xp下也好用
这些东西应该与多线程无关
加载更多回复(4)

15,978

社区成员

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

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