是否可以将故事板应用于应用程序启动后创建的元素?

时间:2011-07-01 10:40:37

标签: c# silverlight canvas storyboard

基本上,我在画布上加载了多个多边形(其数量由用户在画布上为他/她想要的每个多边形单击确定)。然后,当用户单击“播放”按钮时,我希望能够为这些多边形设置动画。关于如何做到这一点的任何想法?或者是否有可能?到目前为止,我只学习了如何将Storyboard应用于在应用程序启动之前创建的元素。

2 个答案:

答案 0 :(得分:0)

希望这会有所帮助:Creating an Animation in Procedural Code

每个多边形需要一个故事板实例(如果要独立控制它们),或者需要将多个DoubleAnimation添加到一个故事板,每个故事板都指向一个多边形的x或y位置。

这完全取决于你想要展示的动画类型。你能详细说明吗?

答案 1 :(得分:0)

这是一个例子......

<Window.Resources>
    <Storyboard x:Key="storyboard">
                    <DoubleAnimation Storyboard.TargetName="someElement" Storyboard.TargetProperty="Angle" From="0.00" To="-90" Duration="00:00:0.5" AccelerationRatio="1" ></DoubleAnimation>
                    <DoubleAnimation Storyboard.TargetName="someOtherElement" Storyboard.TargetProperty="Angle" From="90" To="0" Duration="00:00:0.5"  DecelerationRatio="0.5" ></DoubleAnimation>
                </Storyboard>
</Window.Resources>

Storyboard sb = (Storyboard)this.FindResource("storyboard");
DoubleAnimation da1 = (DoubleAnimation)sb.Children[0];
DoubleAnimation da2 = (DoubleAnimation)sb.Children[1];

da1.SetValue(Storyboard.TargetNameProperty, "changeTargetElement");
da2.SetValue(Storyboard.TargetNameProperty, "changeOtherTargetElement");
sb.Begin(this, true);