首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WinMM实现WPf动画

使用WinMM实现WPf动画
EN

Stack Overflow用户
提问于 2011-01-11 16:59:20
回答 1查看 325关注 0票数 0

我想要一些关于WPF动画的信息

因为我需要精确的渲染,所以我决定使用多媒体计时器而不是默认的动画计时器……

所以我想知道动画时钟是如何工作的…我正在考虑每隔2ms触发一次tick事件,并调用一个调度程序调用(我不确定2ms的间隔是否足以移动一行,但如果我的理解良好,dispactcher将处理这一点,不是吗?!?

代码语言:javascript
复制
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个对象),所以我决定使用字典……(使用密钥作为时间参考..)如果有更好的选择我很高兴听到..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-11 17:15:09

别干那事。如果主线程不能处理modifing+rerendering你的视觉效果,Actions就会堆叠在Dispatcher中,直到真正糟糕的事情发生。

相反,看看CompositionTarget.Rendering吧。基本上,此事件每帧引发一次,因此您可以在渲染之前对其中的对象设置动画。

当然,这里没有帧速率的概念,并且您无法预测此事件被引发的间隔。因此,请考虑将动画基于自上一帧以来经过的时间。

无论如何,这是一个很好的动画练习。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4655818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档