路径动画是一种专门用于将对象按照指定的Path移动的动画,虽然我们也可以通过控制动画的旋转和偏移实现对象的移动,但路径动画更专业,它的实现更加简洁明了。

路径动画中最常用的是MatrixAnimationUsingPath,它通常用于控制对象的MatrixTransform,一个简单的例子如下:

 1     <Canvas >
 2         <Canvas.Resources>
 3             <PathGeometry x:Key="path" Figures="M 10,100 C 35,0 135,0 160,100 180,190 285,200 310,100" />
 4             <Storyboard x:Key="pathStoryboard" >
 5                 <MatrixAnimationUsingPath PathGeometry="{StaticResource path}"
 6                                           Storyboard.TargetName="ButtonMatrixTransform"
 7                                           Storyboard.TargetProperty="Matrix"
 8                                           DoesRotateWithTangent="True"
 9                                           Duration="0:0:5" RepeatBehavior="Forever" >
10                 </MatrixAnimationUsingPath>
11             </Storyboard>
12         </Canvas.Resources>
13
14         <Canvas.Triggers>
15             <EventTrigger RoutedEvent="Control.Loaded">
16                 <BeginStoryboard Storyboard="{StaticResource pathStoryboard}" />
17             </EventTrigger>
18         </Canvas.Triggers>
19
20         <Path Data="{StaticResource path}" Stroke="Black" StrokeThickness="1" />
21
22         <Button Width="50" Height="20" >
23             <Button.RenderTransform>
24                 <MatrixTransform x:Name="ButtonMatrixTransform" />
25             </Button.RenderTransform>
26         </Button>
27     </Canvas>

View Code

注意这儿有一个DoesRotateWithTangent的属性,设置上它后,对象在移动的过程中还能根据路径的坡度旋转,非常有用。

除了MatrixAnimationUsingPath外,另外还有两种路径动画:PointAnimationUsingPath和DoubleAnimationUsingPath。PointAnimationUsingPath用于靠中心点确定位置的形状,

 1     <Canvas >
 2         <Canvas.Resources>
 3             <PathGeometry x:Key="path" Figures="M 10,100 C 35,0 135,0 160,100 180,190 285,200 310,100" />
 4             <Storyboard x:Key="pathStoryboard" >
 5                 <PointAnimationUsingPath PathGeometry="{StaticResource path}"
 6                                           Storyboard.TargetName="ellipse"
 7                                           Storyboard.TargetProperty="Center"
 8                                           Duration="0:0:5" RepeatBehavior="Forever" >
 9                 </PointAnimationUsingPath>
10             </Storyboard>
11         </Canvas.Resources>
12
13         <Canvas.Triggers>
14             <EventTrigger RoutedEvent="Control.Loaded">
15                 <BeginStoryboard Storyboard="{StaticResource pathStoryboard}" />
16             </EventTrigger>
17         </Canvas.Triggers>
18
19         <Path Data="{StaticResource path}" Stroke="Black" StrokeThickness="1" />
20
21         <Path Fill="Orange">
22             <Path.Data>
23                 <EllipseGeometry x:Name="ellipse" Center="5,5" RadiusX="12" RadiusY="12"/>
24             </Path.Data>
25         </Path>
26     </Canvas>

View Code

DoubleAnimationUsingPath则是通过X、Y和Angle三个属性联合实现路径的变化,一般在TranslateTransform中使用,如下就是一个简单的例子:

 1     <Canvas >
 2         <Canvas.Resources>
 3             <PathGeometry x:Key="path" Figures="M 10,100 C 35,0 135,0 160,100 180,190 285,200 310,100" />
 4             <Storyboard x:Key="pathStoryboard" >
 5                 <DoubleAnimationUsingPath PathGeometry="{StaticResource path}"
 6                                           Storyboard.TargetName="translateTransform"
 7                                           Storyboard.TargetProperty="X"
 8                                           Source="X"
 9                                           Duration="0:0:5" RepeatBehavior="Forever" >
10                 </DoubleAnimationUsingPath>
11                 <DoubleAnimationUsingPath PathGeometry="{StaticResource path}"
12                                           Storyboard.TargetName="translateTransform"
13                                           Storyboard.TargetProperty="Y"
14                                           Source="Y"
15                                           Duration="0:0:5" RepeatBehavior="Forever" >
16                 </DoubleAnimationUsingPath>
17             </Storyboard>
18         </Canvas.Resources>
19
20         <Canvas.Triggers>
21             <EventTrigger RoutedEvent="Control.Loaded">
22                 <BeginStoryboard Storyboard="{StaticResource pathStoryboard}" />
23             </EventTrigger>
24         </Canvas.Triggers>
25
26         <Path Data="{StaticResource path}" Stroke="Black" StrokeThickness="1" />
27
28         <Path Fill="Orange">
29             <Path.Data>
30                 <EllipseGeometry x:Name="ellipse" Center="5,5" RadiusX="12" RadiusY="12"/>
31             </Path.Data>
32             <Path.RenderTransform>
33                 <TranslateTransform x:Name="translateTransform" />
34             </Path.RenderTransform>
35         </Path>
36     </Canvas>

View Code

这个实现的效果和MatrixAnimationUsingPath类似,但比它用法复杂,很难找到它的使用场景,但由于它的控制维度更多,可能一般用于需要更多的控制的地方吧。

转载于:https://www.cnblogs.com/TianFang/p/4071954.html

WPF中的动画——(五)路径动画相关推荐

  1. WPF中自动增加行(动画)的TextBox

    WPF中自动增加行(动画)的TextBox 原文:WPF中自动增加行(动画)的TextBox WPF中自动增加行(动画)的TextBox WPF中的Textbox控件是可以自动换行的,只要设置Text ...

  2. SVG—初识4之描边动画和路径动画

    SVG-初识4 SVG描边动画 stroke-dashoffset DrawSVGPlugin插件 路径动画 CSS写路径动画 SVG写路径动画 使用 GreenSock 来实现自行车沿着路径运动的路 ...

  3. Threejs开发之移动动画、旋转动画、缩放动画和路径动画

    以下代码 示例了threejs的移动动画.旋转动画.缩放动画和路径动画 注意:引入three.js三维引擎的路径需要根据 自己的情况修改相应的路径,本示例采用引用外部模块的方式. 以下为完整代码: & ...

  4. WPF 动画之路径动画DoubleAnimationUsingPath

    虽然一直在做WPF开发, 但是实际项目中很少用到动画,今天突然想要撸一撸,  于是便有了下面的代码 <Window.Resources><PathGeometry x:Key=&qu ...

  5. PathMeasure 轨迹动画神器 路径动画

    PathMeasure 轨迹动画神器 轨迹动画一般利用SVG来实现,或者使用属性动画,自定义估计值,根据两点之间的线性关系式计算坐标(复杂) 但是使用PathMeasure来进行绘制轨迹动画,so e ...

  6. android svg路径动画,Svg 路径动画实现旋转进度条

    尝试使的候通现端数是制这.效合应近环大过这业据用 Svg 实现简易的动画效果.有关 Svg 的具体知识点不在此文赘述,仅就所举示例的需求点阐述实在重说道.础过学开概码数项遍间里哦行览屏屏定处..容标中 ...

  7. WPF中的动画——(一)基本概念

    原文:WPF中的动画--(一)基本概念 WPF的一个特点就是支持动画,我们可以非常容易的实现漂亮大方的界面.首先,我们来复习一下动画的基本概念.计算机中的动画一般是定格动画,也称之为逐帧动画,它通过每 ...

  8. 三维场景中常用的路径动画

    三维场景中常用的路径动画 前言 在三维场景中,除了用逼近真实的模型代表现实中的设备.标识物外,通常还会使用一些动画来表示模型在现实中一些行为和作用.常见的动画比如路径动画.旋转动画.发光动画.流动动画 ...

  9. 计算机动作路径教案,《引导路径动画》教案

    <引导路径动画>教案 作为一位兢兢业业的人民教师,很有必要精心设计一份教案,教案是教材及大纲与课堂教学的纽带和桥梁.我们应该怎么写教案呢?以下是小编收集整理的<引导路径动画>教 ...

  10. 咸鱼Maya笔记—路径动画

    咸鱼Maya笔记-路径动画 创建路径动画 动画的创建方式有很多种,路径动画是其中的一种,Key关键帧的方式并不适用于所有的情况,有些特定的情况下我们就需要用到路径动画,它的创建方法如下 创建路径动画 ...

最新文章

  1. 【前端】20款国外非常漂亮的优秀网站404错误页面HTML模板
  2. Windows 10 又在生产环境进行测试?微软:发错了
  3. CSP浏览器安全策略备忘
  4. 机器学习(五)——缓解过拟合
  5. excel可视化图表插件_Excel新版图表插件EasyShu: 新型面积图
  6. Kettle on MaxCompute使用指南
  7. Xcode 模拟器复制解决方案
  8. linux下编译upx ucl
  9. CVPR 2018 挑战赛
  10. git gui怎么拉取项目代码_Gitee码云如何更新项目上的代码?
  11. SQL 常用脚本大全
  12. MacOS Big Sur 11.2.2 (20D80) With and OC 0.6.7 原版DMG黑苹果镜像
  13. vue打包项目及Failed to load resource: net::ERR_FILE_NOT_FOU 或者 static/css/chunk-elementUI.d199d944.
  14. idea上移或下移一行
  15. 他一生仅凭252个字,就傲视千古…
  16. Java中Flie类的用法
  17. 第七课,OpenGL之LookAt函数
  18. 华为项目管理金种子培训教材(资料下载)
  19. 利用nodemcu和mqtt协议让嵌入式设备接入互联网(一.layui前端框架)
  20. (1)从1开始写一个操作系统

热门文章

  1. 习题:编程求圆周长、圆面积、圆球体积、设圆半径r=1.5。要求:用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数后2位...
  2. 常见问题—打包压缩问题
  3. 颜色字符串转换(正则)
  4. Spark记录-Scala基础语法
  5. 深度学习解决多视图非线性数据特征融合问题
  6. AHOI2013 Round2 Day2 简要题解
  7. JavaScript的一些实用技巧收藏
  8. Windows核心编程 第六章 线程基础知识 (上)
  9. hdu4829 带权并查集(题目不错)
  10. 【Java 虚拟机原理】Class 字节码二进制文件分析 一 ( 字节码文件附加信息 | 魔数 | 次版本号 | 主版本号 | 常量池个数 )