我想要一些关于WPF动画的信息
因为我需要精确的渲染,所以我决定使用多媒体计时器而不是默认的动画计时器……
所以我想知道动画时钟是如何工作的…我正在考虑每隔2ms触发一次tick事件,并调用一个调度程序调用(我不确定2ms的间隔是否足以移动一行,但如果我的理解良好,dispactcher将处理这一点,不是吗?!?
public void setTime(int TimeInMs)
{
AnimatedLine.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
AnimatedLine.X1 = TimeInMs / 10 * ZoomRatio;
AnimatedLine.X2 = TimeInMs / 10 * ZoomRatio;
}
));这是最好的方法吗?
此外,我想知道你如何测试一些收集每2ms…
目前,我真的认为不可能每2ms循环一个集合(例如100个对象),所以我决定使用字典……(使用密钥作为时间参考..)如果有更好的选择我很高兴听到..。
发布于 2011-01-11 17:15:09
别干那事。如果主线程不能处理modifing+rerendering你的视觉效果,Actions就会堆叠在Dispatcher中,直到真正糟糕的事情发生。
相反,看看CompositionTarget.Rendering吧。基本上,此事件每帧引发一次,因此您可以在渲染之前对其中的对象设置动画。
当然,这里没有帧速率的概念,并且您无法预测此事件被引发的间隔。因此,请考虑将动画基于自上一帧以来经过的时间。
无论如何,这是一个很好的动画练习。
https://stackoverflow.com/questions/4655818
复制相似问题