写了个动画程序,狂占cpu,该怎么办(100分)

  • 主题发起人 主题发起人 linuxee
  • 开始时间 开始时间
L

linuxee

Unregistered / Unconfirmed
GUEST, unregistred user!
form上添加了一个imagelist,在其中添加了6个bmp图
然后又添加了timer,
在timer事件里两次调用imagelist1。draw(canvs,x,y,index)
参数里的x,y,index都是随着时间的改变而改变的
运行时,速度非常慢,而且发现占了cpu98%的资源

请问这种做法的问题在哪?该怎么解决?
 
你是CPU是?
 
赫赫,p4 1.8
应该是程序的原因吧

奥,忘了说了,每个timer中有个很大的循环(100次),
每次循环里都要调用imagelist。draw
 
用帝插!
 
nnd,p4 1.8都搞到80%了,偶现在还用着赛阳433呢。:(
 
张无忌,你说的是什么意思?
能说详细点吗
 
就是用Direct X,不好意思,我用了大白话
 
啊?我从来没用过directx哎!
 
把程序寄给我,我帮你看看。
yuan-fan@21cn.com
(最好弄一个原理相同的简单演示程序,大段的看着头疼)
 
在timer事件的开始加上Timer1.Enabled :=false;
处理完后再加上Timer1.Enabled :=true;试试
我觉得最好还是用DirectX
 
好的,不过程序是乱七八糟的
我简化一下寄给你吧,3x
 
OK,我可能得等到明天上午帮你看了,争取中午之前给你。
 
tianjh007:
照你那样说的还是没用:(

其实我试过不用imagelist。draw的
直接用canvas.draw(x,y,bitmap)
其中的bitmap是动态生成,再loadfromfile
不过我试的时候只生成了2个bitmap
那个时候倒是好好的,不过生成6个bitmap我还没试过
我用imagelist的目的主要是管理位图方便
 
既然用Timer了,为什么还要用循环来显示图片?
可能你这个循环的时间已经超过了Timer的interval值了吧?
宁可把Timer值设小一点,每次事件只画一帧。
另外用TImageList来管理图片其效率可能比你用个TList来管理一组TBitmap要差。
 
这样的,我的程序是模拟车辆的运行
有一个车队的链表
链表中的车的属性随时间变化
每次timer当中,通过循环判断哪些车要显示
因此每次循环都要显示好多车辆

我待会试试tlist把
 
to 晨阳:
我也想过用线程实现
但是需要在timer作一些运算,
运算完后唤醒进程,进程里作绘图操作,再挂起进程
相当于每次timer中运行、挂起进程
我不知道怎样在timer中控制进程
 
就是!怎么不用DirectX,用那玩仪方便多了
 
怎么没寄给我?
 
来自:linuxee, 时间:2003-4-14 17:46:00, ID:1767947
to 晨阳:
我也想过用线程实现
但是需要在timer作一些运算,
运算完后唤醒进程,进程里作绘图操作,再挂起进程
相当于每次timer中运行、挂起进程
我不知道怎样在timer中控制进程

没必要,线程完全可以替代timer,还用在timer中运行、挂起线程吗?
 
后退
顶部