关键帧动画

PathGeometry:路径几何对象ArcSegment类 :表示两点之间的一条椭圆弧Size代表圆弧的X,Y轴半径,例子中Size="55,20"表示X半径为55,Y轴半径为20的椭圆。SweepDirection获取或设置一个值,该值指定是以 Clockwise[指定按顺时针(正角)方向绘制圆弧。] 方向还是以 Counterclockwise [指定按逆时针(负角)方向绘制圆弧。]方向绘制弧使用 PathGeometry 创建形状RepeatBehavior="Forever":设置RepeatBehavior为永久重复DrawImage是GDI+的Graphics类显示图像的核心方法Geometry对象并不能作为图像独立呈现出来,因此需要呈现方式:这里是在GeometryDrawing中呈现可以作为GeometryDrawing.Geometry的参数呈现为Drawing对象获取或设置用于绘制此 GeometryDrawing 的 PenPen:用于绘制此 GeometryDrawing 的笔。 例子效果就是图标会沿着所你作出的图,根据路线沿着路线的路径跑。

 <Window.Resources>

        <PathGeometry x:Key="path">

            <PathFigure IsClosed="True">

                <ArcSegment Point="2,800" Size="15,10" SweepDirection="Clockwise"/>

                <ArcSegment Point="500,400" Size="5,5"/>

                <ArcSegment Point="400,200" Size="2,5"/>

                <ArcSegment Point="100,100" Size="9,10"/>

                <ArcSegment Point="100,100" Size="1,5"/>

            </PathFigure>

        </PathGeometry>

    </Window.Resources>

    <Window.Triggers>

        <EventTrigger RoutedEvent="Window.Loaded">

            <EventTrigger.Actions>

                <BeginStoryboard>

                    <Storyboard> 

                        <DoubleAnimationUsingPath Storyboard.TargetName="image" 

                                              Storyboard.TargetProperty="(Canvas.Left)" 

                                              PathGeometry="{StaticResource path}"

                                              Duration="0:0:0.1" RepeatBehavior="Forever" Source="X"/>

<DoubleAnimationUsingPath Storyboard.TargetName="image"

                                               Storyboard.TargetProperty="(Canvas.Top)" 

                                              PathGeometry="{StaticResource path}"

                                              Duration="0:0:0.1" RepeatBehavior="Forever" Source="Y"/>

                        

                    </Storyboard>

                </BeginStoryboard>

            </EventTrigger.Actions>

        </EventTrigger>

    </Window.Triggers>

    <Canvas>

        <Path Stroke="Purple" StrokeThickness="1" Data="{StaticResource path}" Canvas.Top="10" Canvas.Left="20"/>

        <Image Name="image" RenderTransformOrigin="-1.042,0.875">

            <Image.Source>

                <DrawingImage>

                    <DrawingImage.Drawing>

                        <GeometryDrawing Brush="Red">

                            <GeometryDrawing.Geometry>

                                <GeometryGroup>

                                    <EllipseGeometry Center="10,10" RadiusX="9" RadiusY="4"/>

                                    <EllipseGeometry Center="10,10" RadiusX="4" RadiusY="9"/>

                                    <EllipseGeometry Center="10,10" RadiusX="5" RadiusY="5"/>

                                </GeometryGroup>

                            </GeometryDrawing.Geometry>

                            <GeometryDrawing.Pen>

                                <Pen Thickness="5" Brush="Red"/>

                            </GeometryDrawing.Pen>

                        </GeometryDrawing>

                    </DrawingImage.Drawing>

                </DrawingImage>

            </Image.Source>

        </Image>

 </Canvas>原图:效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值