如何使PathGeometry动画显示以缓慢显示?

时间:2012-02-06 23:33:31

标签: c# wpf silverlight animation

您有以下XAML

<Path Stroke="#FF000000" StrokeThickness="3" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeDashCap="Round" StrokeLineJoin="Round" StrokeMiterLimit="4" Name="kvg_0994c_s1">
   <Path.Data>
      <PathGeometry FillRule="Nonzero" Figures="M28.27,12.64C28.32,13.27 28.52,14.32 28.17,15.16 25.86,20.7 19.22,31.55 9.81,39.71" />
   </Path.Data>
</Path>

我想让PathGemorty动画显示自己缓慢显示(超过2秒左右)。基本上我所追求的效果是自动在屏幕上画一条线,特别是上面代码中指定的路径。

我需要在C#代码中执行此操作,因为我从外部文件动态加载XAML。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

您必须使用WPF动画。请看这里:http://msdn.microsoft.com/en-us/library/ms752312.aspx有关动画的更多信息,您可以在Adam Nathan的优秀书籍“Windows Presentation Foundation Unleashed”中找到。 我想你可以在这里找到你问题的确切答案:http://social.msdn.microsoft.com/Forums/en/wpf/thread/19a7bd4b-cf28-4b31-a329-a5f58b9ec374

答案 1 :(得分:1)

你是什么意思'缓慢地揭示自己'?你是说它是一点一滴地绘制的?然后你必须分解数据,然后重新组合一个逐个添加元素的几何。所以你可以在后面的代码中使用Path的名字(kvg_0994c_s1)(并假设Path.Data总是一个PathGeometry,所以你可以将它转换为PathGeometry)你在初始List中得到PathGeometry.Figures,然后清除数字在显示的路径中。然后你设置一个计时器(一个DispatchTimer可能就足够了)每200ms左右调用一个函数,并在这个函数中逐个将数字添加到显示路径的PathGeometry.Figures中。您可能必须同时调整每次添加的部件数量,以及计时器值以获得所需的效果。如果你想要恒定的“速度” - &gt;你必须计算每个部分的长度并进行调整。但是让非恒定的速度看起来更像是手绘可能会很好。