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[2as 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度       

作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/yjmyzz/p/1631564.html