c#中的动画控件
本文关键字:控件 动画 | 更新日期: 2023-09-27 18:17:25
我试图在控件上移动光标时向右滑动控件,并在光标移出时向后滑动。
由于表单包含许多具有相同动画的控件,我决定让这些控件在不同的线程上滑动。问题是,当我创建一个线程并使用Control.Invoke()
来改变控件的位置时,主UI会冻结,直到动画完成。
我做错了什么?或者有其他解决办法吗?
编辑:也用Control.BeginInvoke()
。结果是一样的
当您试图移动控件的速度超过UI线程可以处理的速度时,就会发生这种情况。下面的库是一个很好的例子,说明了如何为所有动画使用单个全局FRAME-LIMITED计时器。
https://falahati.github.io/WinFormAnimation/WinForm动画库(.Net3.5 +)
一个简单的库,用于动画控件/值在。net WinForm(。网3.5及更高版本)。关键帧(路径)为基础,完全可定制。
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像素。