DoubleAnimation方法

现在silverlight中还不支持直接用c#代码来创建动画,只能通过XamlReader来加载storyboard。
今天看了DoubleAnimation这个方法。可以动态的设置属性。   这里就很奇怪。我动态的new出来的巨型一直不发生变化。而直接在舞台上画出的巨型就能发生变化。
研究了好久才发现DoubleAnimation只能操作已经声明过的属性。
     < Rectangle  Width ="46"  Height ="41"  Fill ="#FFA74545"  Stroke ="#FF000000"  Canvas.Left ="154"
Canvas.Top
="262"  x:Name ="ox" RenderTransformOrigin ="0.5,0.5" >
        <Rectangle.RenderTransform>
            
<TransformGroup>
                
<ScaleTransform ScaleX="1" ScaleY="1"/>
                
<SkewTransform AngleX="0" AngleY="0"/>
                
<RotateTransform Angle="34.744"/>
                
<TranslateTransform X="0" Y="0"/>
            
</TransformGroup>
        
</Rectangle.RenderTransform>

    
</ Rectangle >

         private   const   string  ANIMATION  =   " <Storyboard Name=\ " TestStoryboard\ " > "
       
+   " <DoubleAnimation "
       
+   "   Storyboard.TargetName=\ " ox\ ""
       
+   "   Storyboard.TargetProperty=\ " (UIElement.RenderTransform).
(TransformGroup.Children)[
3 ].(TranslateTransform.X)\ ""
       
+   "   From=\ " 0 \ "  To=\ " 100 \ "  Duration=\ " 0 : 0 : 5 \ "  /> "
       
+   " </Storyboard> " ;

            Storyboard storyboard  =  XamlReader.Load(ANIMATION)  as  Storyboard;
            
this .Resources.Add(storyboard);
            storyboard.Begin();
这里 <Rectangle.RenderTransform>是必须要的。多一行少一行都不行。不然就不会产生动画。
目前对“ Storyboard.TargetProperty”这个属性还不是很明白。

你可能感兴趣的:(animation)