c#在计时器上移动矩形与移动面板.滴答(作为速度)

本文关键字:移动 滴答 速度 计时器 | 更新日期: 2023-09-27 18:17:39

我有一个计时器。当它滴答时,通过公式计算,12个面板的位置会发生变化。

问题是,虽然计时器的间隔是1毫秒,但移动速度非常慢。有很多计算。可以做些什么来提高速度,使用绘画类或其他东西?

gui显示位置,我可以通过点击移动面板,所以值。如果正确的方法是绘图类,我是否有机会通过单击并获取它们的值来移动矩形?

c#在计时器上移动矩形与移动面板.滴答(作为速度)

虽然定时器的间隔是1毫秒

这是核心问题,计时器不能滴答那么快。实际的计时器分辨率受操作系统的时钟中断率的限制。在大多数Windows机器上每秒滴答64次。或者每15.625毫秒一次。因此,您希望获得的最小间隔是16毫秒。所以这些面板现在的移动速度可能比你希望的要慢16倍。

记住这是如何被观察到的,你只需要让人类的眼睛高兴。它们无法感知任何1毫秒的变化,任何更新速度超过每秒25次的东西看起来都是模糊的。这在电视和电影中得到了利用,电影以每秒24帧的速度更新。每42毫秒一次

所以一个相同的定时器设置。时间间隔是时钟中断率的三倍,46毫秒。在普通机器上,实际的滴答间隔将是3 x 15.625 = 46.875毫秒。如果机器以更高的时钟中断率运行,仍然接近46毫秒。你将获得相当于21帧/秒的帧率。就在人眼模糊的边缘。下一个较低的相同速率是中断速率的两倍,即32帧/秒的31毫秒。让它再小一点都没有意义,它是不可观察的,只会毫无意义地消耗cpu时间。

而且,重要的是,面板移动的速度现在取决于您在Tick事件处理程序中更改其Location属性的程度。间隔是固定的,所以你得到的运动量是由位置的增量决定的。这将不是是一个像素,可能是你现在使用的