首页 > 解决方案 > 围绕元素原点到 C# 代码的旋转动画

问题描述

我有一个 XAML 代码,它为元素的旋转变换的角度属性设置动画:

<Canvas.RenderTransform>
                        <RotateTransform Angle="0" 
                                         x:Name="MyAnimatedTransform"/>
                    </Canvas.RenderTransform>
                    <Canvas.Triggers>
                        <EventTrigger RoutedEvent="Loaded">
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation                 Storyboard.TargetName="MyAnimatedTransform"
                                                     Storyboard.TargetProperty="(RotateTransform.Angle)"
                                                     From="0.0"
                                                     To="90"
                                                     Duration="0:0:1" />
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Canvas.Triggers>

从那以后我一直在尝试将其转换为 C# 代码,但由于某种原因,我认为我遗漏了一些东西......

代码:

   public void AnimateElement(RotateTransform element, UIElement control, double degreesTo, double secDuration)
        {
            DoubleAnimation OriginAnimatorDoubleAnimation = new DoubleAnimation()
            {
                From = 0,
                To = degreesTo,
                Duration = TimeSpan.FromSeconds(secDuration)
            };

            Storyboard.SetTargetProperty(element, new PropertyPath("RotateTransform.Angle"));
            Storyboard.SetTarget(element, OriginAnimatorDoubleAnimation);

            Storyboard storyboard = new Storyboard();
            storyboard.Duration = TimeSpan.FromSeconds(secDuration);
            storyboard.Children.Add(OriginAnimatorDoubleAnimation);

            storyboard.Begin();
        }
     

有人可以告诉我我做错了什么吗?

谢谢,

标签: c#wpfxaml

解决方案


这对我有用:

  public void RotateElement(RotateTransform transform, double degreesTo, double secDuration)
        {
            var animation = new DoubleAnimation
            {
                To = degreesTo,
                Duration = TimeSpan.FromSeconds(secDuration)
            };

            transform.BeginAnimation(RotateTransform.AngleProperty, animation);

        }

不过谢谢!


推荐阅读