刚看了一下你的程序。我现在没时间改。
你的程序的架构方面需要动大手术。
一、VB6里,慢速操作有:访问属性。
中速操作有:带自动重绘的绘图,大面积的图片,变体类型数据。
中偏快操作有:不带自动重绘的绘图。API调用。
快速操作有:明确的类型的数据访问,常量,运算。
二、你这个程序里每个时间中断 使用的慢速操作有:
15个TEXT 的 属性,数据类型是变体。
15个图片框改变大小。
15个标签移动位置。
得出的结论:你的程序会非常的慢。你要求却是在 每个时间的中断里,尽量的快。
三、修改建议
每根柱子,使用 绘图操作。 使用贴图的办法来。你可以选择使用API贴图,也可以使用VB的方法来贴图。
需要不闪烁,需要进行一次缓冲操作,然后再贴到上面来。
具体代码我没时间写,你自己琢磨一下。
具体流程我想到的:
按钮部分
按下显示后,把15个文本框都设置为不可修改,然后把这15个值读到一个数组里。
显示部分,对后面 Picture
进行操作。 Picture 为不可见,自动重绘=真。
1、定义为一个通用过程。需要传入序号,然后根据序号取坐标和取值。
2、15根柱子,每根柱子的X坐标需要放在一个 指定了数据的数组里,不能在每次绘图时进行计算,以提高速度 。
3、规定柱子最大值,如果不是固定值,那么在开始绘图时,必须求出来。
4、根据当前值,计算出柱子的高度,换算成Y坐标。
5、使用VB里的拉伸贴图,直接贴上去。
6、根据上面计算出来的X坐标,Y坐标,把数据显示上面。使用 光标定位及 print 命令。
每个时间周期:
后面为一个 Picture ,先清屏。
再带下面的线及显示坐标。这里的X是根据数组来,Y是固定值。
再15个循环,调用显示部分,传进序号进去。
调用完成后,再把 Picture 里的内容复制到窗体指定位置。
窗体的刷新过程
复制 Picture 的内容到窗体指定位置。以便被窗体覆盖后也能显示结果而不是显示空白。如果直接对窗体绘图,有些时候会造成闪烁。
这种缓冲一下,可以大大减少闪烁的情况。有极端的情况下还是会出现闪烁的,但要好多了。
----------------------------------
以前的测试结果:一个简单的图。可能论坛里还能找到,佗罗旋转的,忘了具体的名字了。
1、先缓冲,再贴图,FPS=300+
2、自动重绘开,再直接绘图,FPS=200+
3、自动重绘关,再直接绘图,FPS=500+