在Silverlight中“动画化”MapPolyLine

时间:2011-01-25 21:48:57

标签: c# multithreading silverlight bing-maps

我需要为MapPolyLine设置动画,以便在给定事件中,启动引脚会拉伸到结束引脚。我考虑的方法是动画帧,这样我就可以将MapPolyLine分成n个段,并沿着我选择的逻辑减少每个帧之间的TimeSpan ts(为了简单起见,我们只需说ts = ts / 2)周期)。

我知道无法为MapPolyLine设置动画,但可以通过更新结束位置的纬度和经度来更改线条的外观。我的问题涉及时机。我对多线程的经验很少,所以我不想冒用户遇到可能难以诊断的基于线程的错误的风险。我应该:

  • 使用简单的DispatcherTimer和tick方法
  • 使用每次TimeSpan过去时报告进度的BackgroundWorker
  • 使用虚拟动画并将事件处理程序附加到渲染事件
  • 上述选项以外的解决方案?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

决定使用DispatcherTimer考虑动画将要花费的时间 - 通过创建一个保持状态和自己的调度计时器的单独动画对象,它最终比使用单独的线程更有效,因为回调意味着中断主UI线程并根据要求,这些动画中不可能同时发生超过2-3个,95%或更高的动画一次只有1个动画。