Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试使图片框在 Winform 上平滑移动,它看起来平滑的唯一方法是如果我使用计时器并将像素速度降低到每 1 微秒 1 像素,即使这样,图片框的移动也很慢。
如何使用微秒使图片框移动得更快,同时在移动时仍保持平滑度?
首先,我不知道你在问什么,所以也许这会有所帮助,也许不会。
时间是一个棘手的问题。首先,所有 .net 计时器都以毫秒为分辨率,低于此分辨率,如果不使用某种类型的高分辨率计时器,您无法保证系统返回给您的内容。.net 秒表使用底层的高分辨率计时器,但没有回调机制,因此您需要使用不同的线程和轮询来构建自己的计时器。也就是说,您可能希望以不同的方式查看动画,然后移动图片框,例如使用 bit blt 或重载低级绘制。
我想在表单上移动控件是一个相当慢的操作。所以并不是你的计时器不够精细,它无论如何都会闪烁。您可以在Paint事件中将图片框中的任何内容绘制到表单背景上,而不是移动图片框,而是在计时器滴答时将绘制的位置更改为。通过这种方式,您可以利用双缓冲等功能来获得更流畅的动画。您会发现在这种情况下,即使是像 40 毫秒(25Hz 刷新)这样比较大的间隔也应该足够了。