WPF 在 XAML 中旋转矩形动画

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12298019/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 23:30:47  来源:igfitidea点击:

WPF Rotate rectangle animation in XAML

wpfxamlanimationautorotate

提问by Bruno Bieri

How can I rotate a rectangle infinitely - ONLY within xaml definition. So far I found a solution with code but no xaml: http://www.codeproject.com/Articles/23257/Beginner-s-WPF-Animation-Tutorialwhich I use like this:

如何无限旋转矩形 - 仅在 xaml 定义中。到目前为止,我找到了一个带有代码但没有 xaml 的解决方案:http: //www.codeproject.com/Articles/23257/Beginner-s-WPF-Animation-Tutorial,我是这样使用的:

private void Window_Loaded_1(object sender, RoutedEventArgs e)
{
    var doubleAnimation = new DoubleAnimation(360, 0, new Duration(TimeSpan.FromSeconds(1)));
    var rotateTransform = new RotateTransform();
    rect1.RenderTransform = rotateTransform;
    rect1.RenderTransformOrigin = new Point(0.5, 0.5);
    doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
    rotateTransform.BeginAnimation(RotateTransform.AngleProperty, doubleAnimation);
}

But how can I achieve this with XAML only?

但是如何仅使用 XAML 来实现这一点?

回答by Zabavsky

Something like this

像这样的东西

<Rectangle x:Name="rect1" RenderTransformOrigin="0.5, 0.5">
  <Rectangle.RenderTransform>
    <!-- giving the transform a name tells the framework not to freeze it -->
    <RotateTransform x:Name="noFreeze" />
  </Rectangle.RenderTransform>
  <Rectangle.Triggers>
    <EventTrigger RoutedEvent="Loaded">
      <BeginStoryboard>
        <Storyboard>
          <DoubleAnimation
            Storyboard.TargetProperty="(Rectangle.RenderTransform).(RotateTransform.Angle)"
            To="-360" Duration="0:0:1" RepeatBehavior="Forever" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Rectangle.Triggers>
</Rectangle>

Of course you can remove Loadedtrigger and run this storyboard whenever you want.

当然,您可以随时删除Loaded触发器并运行此故事板。