Blend生成的TransformGroup如何引用?

很多时候,blend在制作动画时,会自动为对象生成如下代码:

 

< Rectangle  Fill ="White"  Stroke ="Black"  HorizontalAlignment ="Center"  VerticalAlignment ="Center"  Width ="300"  Height ="30"  RenderTransformOrigin ="0.5,0.5"  x:Name ="rect" >
    
< Rectangle.RenderTransform >
     
< TransformGroup >
      
< ScaleTransform />
      
< SkewTransform />
      
< RotateTransform />
      
< TranslateTransform />
     
</ TransformGroup >
    
</ Rectangle.RenderTransform >
   
</ Rectangle >

 


如果想在cs代码中动态控制,就得先知道如何引用它们,在不借助x:Name的情况下,可以这么做: 

 

private   void  Button_Click( object  sender, RoutedEventArgs e)
        {            

            
RotateTransform r  =  (rect.RenderTransform  as  TransformGroup).Children[ 2 as  RotateTransform;

            DoubleAnimation dblAnim 
=   new  DoubleAnimation() { Duration  =  TimeSpan.FromSeconds( 1 ), To  =   135.0 , EasingFunction  =   new  BackEase() { EasingMode  =  EasingMode.EaseInOut } };         

            Storyboard.SetTarget(dblAnim, r);
            Storyboard.SetTargetProperty(dblAnim, 
new  PropertyPath(RotateTransform.AngleProperty));

            Storyboard sb 
=   new  Storyboard();
            sb.Children.Add(dblAnim);           
            sb.AutoReverse 
=   true ;
            sb.Begin();           

        }
    }

 

 

上面的代码,将生成一段动画:1秒钟内将矩形旋转135度       

 

你可能感兴趣的:(transform)