Wpf 沿路径设置对象的动画

Wpf 沿路径设置对象的动画,wpf,xaml,shapes,Wpf,Xaml,Shapes,我尝试在wpf中使用形状,我需要以下内容:我有一个图像,我画了一些形状,我希望图像沿着这个形状的线条移动 我的意思是: 例如,形状: <Path Stroke="Black" StrokeThickness="5" Fill="Goldenrod"> <Path.Data> <PathGeometry> <PathGeometry.Figures>

我尝试在wpf中使用形状,我需要以下内容:我有一个图像,我画了一些形状,我希望图像沿着这个形状的线条移动

我的意思是:

例如,形状:

<Path Stroke="Black" StrokeThickness="5" Fill="Goldenrod">
        <Path.Data>
            <PathGeometry>
                <PathGeometry.Figures>
                    <PathFigure StartPoint="100,50" IsClosed="True">
                        <LineSegment Point="140,60"/>
                        <LineSegment Point="150,100"/>
                        <LineSegment Point="125,120"/>
                        <LineSegment Point="90,110"/>
                        <LineSegment Point="80,80"/>
                    </PathFigure>
                </PathGeometry.Figures>
            </PathGeometry>
        </Path.Data>
    </Path>
i、 e从点
100,50
-->
140,60
开始,依此类推


但是它并不完全沿着这条路径运行

您的草图似乎表明您希望沿路径设置某种红色箭头的动画,包括旋转到当前路径段的切线角度

您可以通过使用路径为MatrixTransform的
矩阵
属性设置动画来实现这一点。下面的示例使用附加的
TranslateTransform
将图像居中。由于Image元素的Source属性中有一个
DrawingImage
,因此您也可以使用另一个
Path
而不是
Image

<Window.Resources>
    <PathGeometry x:Key="AnimationPath"
                  Figures="M100,50 L140,60 150,100 125,120 90,110 80,80Z"/>
</Window.Resources>
<Canvas>
    <Path Stroke="Black" StrokeThickness="5" Fill="Goldenrod"
          Data="{StaticResource AnimationPath}"/>

    <Image>
        <Image.Source>
            <DrawingImage>
                <DrawingImage.Drawing>
                    <GeometryDrawing Geometry="M0,0 L10,8 0,16">
                        <GeometryDrawing.Pen>
                            <Pen Thickness="3" Brush="Red"/>
                        </GeometryDrawing.Pen>
                    </GeometryDrawing>
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>

        <Image.RenderTransform>
            <TransformGroup>
                <TranslateTransform X="-5" Y="-8"/>
                <MatrixTransform x:Name="AnimatedTransform"/>
            </TransformGroup>
        </Image.RenderTransform>

        <Image.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard>
                    <Storyboard RepeatBehavior="Forever">
                        <MatrixAnimationUsingPath
                            Storyboard.TargetName="AnimatedTransform"
                            Storyboard.TargetProperty="Matrix"
                            Duration="0:0:5"
                            DoesRotateWithTangent="True"
                            PathGeometry="{StaticResource AnimationPath}"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Image.Triggers>
    </Image>
</Canvas>

@Clemens不允许我添加此属性,您熟悉wpf吗?你能帮个忙吗?
 Figures="M 10,100 C 100,50 140,60 150,100 125,120 90,110 80,80 "
<Window.Resources>
    <PathGeometry x:Key="AnimationPath"
                  Figures="M100,50 L140,60 150,100 125,120 90,110 80,80Z"/>
</Window.Resources>
<Canvas>
    <Path Stroke="Black" StrokeThickness="5" Fill="Goldenrod"
          Data="{StaticResource AnimationPath}"/>

    <Image>
        <Image.Source>
            <DrawingImage>
                <DrawingImage.Drawing>
                    <GeometryDrawing Geometry="M0,0 L10,8 0,16">
                        <GeometryDrawing.Pen>
                            <Pen Thickness="3" Brush="Red"/>
                        </GeometryDrawing.Pen>
                    </GeometryDrawing>
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>

        <Image.RenderTransform>
            <TransformGroup>
                <TranslateTransform X="-5" Y="-8"/>
                <MatrixTransform x:Name="AnimatedTransform"/>
            </TransformGroup>
        </Image.RenderTransform>

        <Image.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard>
                    <Storyboard RepeatBehavior="Forever">
                        <MatrixAnimationUsingPath
                            Storyboard.TargetName="AnimatedTransform"
                            Storyboard.TargetProperty="Matrix"
                            Duration="0:0:5"
                            DoesRotateWithTangent="True"
                            PathGeometry="{StaticResource AnimationPath}"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Image.Triggers>
    </Image>
</Canvas>