.NET Windows Form 里面的 Timer 控件 真实间隔测试

以下是根据 GDI+ 双缓冲利用计时器绘图的实测

环境:C# 窗体应用程序 (.NET 4.0)

无实际内容,仅纯色

Timer 设定值和实际更新时间间隔表:
一个数字的表示它能长时间保持,两个数字的表示它会比较频繁地波动。
01 ~ 15ms: 64FPS
_____16ms: 40FPS
17 ~ 31ms: 32FPS
_____32ms: 24FPS
33 ~ 46ms: 21,22FPS
_____47ms: 20FPS
48 ~ 62ms: 16FPS
_____63ms: 13,14FPS
64 ~ 78ms: 12,13FPS
79 ~ 93ms: 10,11FPS
_____94ms: 10FPS

 

结论:

⒈在上述范围内 设定为 1、10、15毫秒都不能改变 Timer 的刷新时间,全部稳定在64次/秒

⒉很多时候,帧数 * 设定时间并不等于 1000,且误差较大。因此 Timer 控件不适合用来累计计时。

⒊Timer控件运行间隔和操作系统、窗口线程优先级、CPU频率可能存在关系。

 

关于 游戏制作:

GDI+双缓冲可以制作UI界面和小游戏,64帧的刷新率足够了,但要注意绘制内容不能太多。

具体取决于机器CPU性能,一般来说超过800x800的图像和超过1000个字就会对更新时间有影响,一般会从60帧降到30帧左右。

采取局部更新的设计可以提高性能。

将游戏逻辑丢到另外线程中处理可以减少对主窗口 UI 帧数的压力。 例如 System.Timer.Timer (不过我尚未尝试)

 

 

posted @ 2022-07-08 20:39  魔法软糖  阅读(102)  评论(0)    收藏  举报