wpf 通过应用从0到360度的旋转来模拟动画微调器,从而永远连续旋转圆周弧

cgvd09ve  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(208)

下面我画了一个圆周的弧,现在我想在一个循环中无限地应用从0到360的旋转来模拟一个旋转动画。你可以看到here,一个圆周的弧永远旋转。

<DrawingImage x:Key="ico_spinnerDrawingImage">
  <DrawingImage.Drawing>
    <DrawingGroup ClipGeometry="M0,0 V12 H12 V0 H0 Z">
      <DrawingGroup.Transform>
        <TranslateTransform X="9.5367397534573684E-07" Y="1.1465158453161615E-14" />
      </DrawingGroup.Transform>
      <GeometryDrawing Brush="#FF00AA2B" Geometry="F1 M12,12z M0,0z M12,12C12,10.4241 11.6896,8.86371 11.0866,7.4078 10.4835,5.95189 9.59958,4.62902 8.48528,3.51472 7.37098,2.40042 6.04811,1.5165 4.5922,0.913445 3.13629,0.310389 1.57586,-6.88831E-08 -9.53674E-07,0L0,3C1.1819,3 2.35222,3.23279 3.44415,3.68508 4.53608,4.13738 5.52823,4.80031 6.36396,5.63604 7.19969,6.47177 7.86262,7.46392 8.31492,8.55585 8.76721,9.64778 9,10.8181 9,12L12,12z" />
    </DrawingGroup>
  </DrawingImage.Drawing>
</DrawingImage>

上面的drawingimage包含在我导入到WPF视图的字典中,我通过以下操作将其与WPF图像的source属性关联起来(我删除了不相关的属性):

<Image Source="{Binding Path=MySpinnerIcon}"/>

现在,如何将该动画应用于drawingimage以模拟一个动画旋转器永远持续旋转?

ghhkc1vu

ghhkc1vu1#

您可以动态显示RotateTransformAngle属性,该属性用作UI元素的RenderTransform
动画本身由StoryBoard中的DoubleAnimation执行,例如,可以由UI元素的Loaded事件上的EventTrigger启动。
下面的示例使用一个简单的Path元素而不是Image元素。它在一个200x200的框中绘制了一个20个单位宽的椭圆弧,两端为圆形,半径为90。

<Path Data="M100,10 A90,90 0 0 1 190,100"
      Width="200" Height="200"
      Stroke="Turquoise" StrokeThickness="20"
      StrokeStartLineCap="Round" StrokeEndLineCap="Round"
      RenderTransformOrigin="0.5,0.5">
    <Path.RenderTransform>
        <RotateTransform />
    </Path.RenderTransform>
    <Path.Triggers>
        <EventTrigger RoutedEvent="Loaded">
            <BeginStoryboard>
                <Storyboard TargetProperty="RenderTransform.Angle">
                    <DoubleAnimation By="360" Duration="0:0:1"
                                     RepeatBehavior="Forever"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Path.Triggers>
</Path>

相关问题