c#中的动画控件

本文关键字:控件 动画 | 更新日期: 2023-09-27 18:17:25

我试图在控件上移动光标时向右滑动控件,并在光标移出时向后滑动。

由于表单包含许多具有相同动画的控件,我决定让这些控件在不同的线程上滑动。问题是,当我创建一个线程并使用Control.Invoke()来改变控件的位置时,主UI会冻结,直到动画完成。

我做错了什么?或者有其他解决办法吗?

编辑:也用Control.BeginInvoke()。结果是一样的

c#中的动画控件

当您试图移动控件的速度超过UI线程可以处理的速度时,就会发生这种情况。下面的库是一个很好的例子,说明了如何为所有动画使用单个全局FRAME-LIMITED计时器。

WinForm动画库(.Net3.5 +)

一个简单的库,用于动画控件/值在。net WinForm(。网3.5及更高版本)。关键帧(路径)为基础,完全可定制。

https://falahati.github.io/WinFormAnimation/

new Animator2D(
        new Path2D(c_control.Location.X, c_control.Location.Y, c_control.Location.X + 100, c_control.Location.Y, 250))
    .Play(c_control, Animator2D.KnownProperties.Location);

这将c_control控件在250ms内向右移动100像素。