PathAnimation

简介: 原文:PathAnimation使用Blend制作PathAnimation 1:选中Path转换为运动路径 2:选择目标对象   PathAnimation使用动态的Path PathAnimation动画在播放的时候,PahtGeometry是已经确定的,不会改变,不会实时的根据Pa...
原文: PathAnimation

使用Blend制作PathAnimation

1:选中Path转换为运动路径

2:选择目标对象

 

PathAnimation使用动态的Path

PathAnimation动画在播放的时候,PahtGeometry是已经确定的,不会改变,不会实时的根据Path的改变动画进行调整,所以是不能进行绑定

只有在每一次需要播放动画之前读取相关的Path的Data,读取当前的PathGeometry然后开始动画

 1    <Path x:Name="path" Stroke="DarkGray" StrokeThickness="3">
 2             <Path.Data>
 3                 <PathGeometry>
 4                     <PathFigure 
 5                         StartPoint="{Binding Center, ElementName=ptStart}">
 6                         <BezierSegment 
 7                             Point1="{Binding Center, ElementName=ptCtrl1}"
 8                             Point2="{Binding Center, ElementName=ptCtrl2}"
 9                             Point3="{Binding Center, ElementName=ptEnd}"/>
10                     </PathFigure>
11                 </PathGeometry>
12             </Path.Data>
13         </Path>

 

 1  private void Button_Click(object sender, RoutedEventArgs e)
 2         {
 3             Canvas.SetLeft(this.truck, -this.truck.ActualWidth / 2);
 4             Canvas.SetTop(this.truck, -this.truck.ActualHeight / 2);
 5             this.truck.RenderTransformOrigin = new Point(0.5, 0.5);
 6 
 7             MatrixTransform matrix = new MatrixTransform();
 8             this.truck.RenderTransform = matrix;
 9 
10             NameScope.SetNameScope(this, new NameScope());
11             this.RegisterName("matrix", matrix);
12 
13             MatrixAnimationUsingPath matrixAnimation = new MatrixAnimationUsingPath();
14             matrixAnimation.PathGeometry = this.path.Data.GetFlattenedPathGeometry();
15             matrixAnimation.Duration = new Duration(TimeSpan.FromSeconds(5));
16 
17             //matrixAnimation.AutoReverse = true;   //重复
18             //matrixAnimation.IsOffsetCumulative = !matrixAnimation.AutoReverse;
19             //matrixAnimation.RepeatBehavior = RepeatBehavior.Forever;
20             matrixAnimation.DoesRotateWithTangent = false;   //旋转
21 
22             Storyboard story = new Storyboard();
23             story.Children.Add(matrixAnimation);
24             Storyboard.SetTargetName(matrixAnimation, "matrix");
25             Storyboard.SetTargetProperty(matrixAnimation, new PropertyPath(MatrixTransform.MatrixProperty));
26             story.Begin(this);
27         }

 

目录
相关文章
|
2月前
|
API Android开发 开发者
NavigableListDetailPaneScaffold
【9月更文挑战第12天】
23 5
|
人工智能 供应链
PPA322B HIEE300016R2 HIEE400235R1
PPA322B HIEE300016R2 HIEE400235R1
73 0
PPA322B HIEE300016R2 HIEE400235R1
|
Windows
cclientX,pageX,screenX等详解
clientX 观点:鼠标相对于WINDOWS的坐标。 这里这个WINDOWS是指我们能看见的浏览器大小。所以不可能超过显示器的大小,如 screen.width,screen.height
117 0
|
XML Java 数据库连接
parameterType是必须写的吗?
xml中没有配置parameterType,但是这是正确的,因为mybatis能自动识别,但返回值类型不能不写,因为mybatis需要将获得结果封装到相应的类中,查询的字段与类的属性需要一致。
390 0
parameterType是必须写的吗?
|
监控 Kubernetes 应用服务中间件
K8S(5)HPA
K8S(5)HPA
315 0
PAUSE
PAUSE
105 0
Pangram
Pangram
126 0
Pangram
|
Kubernetes 网络协议 应用服务中间件
k8s的HPA
实现pod的自动伸缩
522 0
|
机器人
你真的了解RPA吗?
RPA(Robotic Process Automation),译为机器人流程自动化,也可称为数字化劳动力(Digital Labor),是一种智能化软件,它可以像人类一样,通过简单的编程来完成设定好的任务流程,优化整个企业的基础流程作业,降低成本、提高效率。
2138 0
|
存储 安全 Java
PalDB 介绍
开篇  PalDB在我的工作中被大面积使用,场景我就不描述了,这里我只想直白的说一句,这个系列的PalDB博文绝对是国内最详细的,如果有兴趣非常建议收藏了好好看看。
1069 0