WPF编程,通过Path类型制作沿路径运动的动画一种方法。

原文:WPF编程,通过Path类型制作沿路径运动的动画一种方法。

版权声明:我不生产代码,我只是代码的搬运工。 https://blog.csdn.net/qq_43307934/article/details/87339456

  • From/To/By 类型动画的输入是From、To和By参数;
  • KeyFrame类型动画的输入是关键帧;
  • 而Path类型的动画输入则是PathGeometry,这是其最大特点。

?Path类型的动画是一种可以沿指定路径运动的动画,

使用DoubleAnimationUsingPath时需要多指定一个Source属性,表明这个动画是应用在x轴、y轴还是角度(Angle)上。运行这个示例,结果如图所示。箭头沿着这个轨迹运动,其中箭头是一张图片。

主要的三大部分:对X轴变化,对Y轴变化,对图片角度变化。

?

1、前台

?

 <Canvas>
        <Path Stroke="Black"
              StrokeThickness="1"
              Data="M 96 288 C 576 0,0 0,480 288" />

        <Image Source="Photo/b5.ico"
               Width="30"
               Height="30"
               x:Name="img"
               >
            <Image.RenderTransform>
                <TransformGroup>
                    <RotateTransform x:Name="MyRotateTransform"
                                     Angle="0"
                                     CenterX="5"
                                     CenterY="5" />
                    <TranslateTransform x:Name="MyTranslateTransform"
                                        X="75"
                                        Y="280" />
                </TransformGroup>
            </Image.RenderTransform>
            <Image.Triggers>
                <EventTrigger RoutedEvent="Path.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimationUsingPath Storyboard.TargetName="MyRotateTransform"
                                                      Storyboard.TargetProperty="Angle"
                                                      Source="Angle"
                                                      Duration="0:0:5"
                                                      RepeatBehavior="Forever"
                                                      AutoReverse="True">
                                <DoubleAnimationUsingPath.PathGeometry>
                                    <PathGeometry Figures="M 96 288 C 576 0,0 0,480 288" />
                                </DoubleAnimationUsingPath.PathGeometry>
                            </DoubleAnimationUsingPath>
                            <DoubleAnimationUsingPath Storyboard.TargetName="MyTranslateTransform"
                                                      Storyboard.TargetProperty="(Y)"
                                                      Source="Y"
                                                      Duration="0:0:5"
                                                      AutoReverse="True"
                                                      RepeatBehavior="Forever"
                                                       >
                                <DoubleAnimationUsingPath.PathGeometry>
                                    <PathGeometry Figures="M 96 288 C 576 0,0 0,480 288" />
                                </DoubleAnimationUsingPath.PathGeometry>

                            </DoubleAnimationUsingPath>
                            <DoubleAnimationUsingPath Storyboard.TargetName="MyTranslateTransform"
                                                      Storyboard.TargetProperty="(X)"
                                                      Source="X"
                                                      Duration="0:0:5"
                                                      AutoReverse="True"
                                                      RepeatBehavior="Forever"
                                                      >
                                <DoubleAnimationUsingPath.PathGeometry>
                                    <PathGeometry Figures="M 96 288 C 576 0,0 0,480 288" />
                                </DoubleAnimationUsingPath.PathGeometry>
                            </DoubleAnimationUsingPath>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Image.Triggers>
        </Image>
    </Canvas>

2、问题

1、不知哪里出错了,没能将图片的中心运行的时候与路径一致。

2、这里当界面加载的时候就启动动画,没有写如何停止、如何重新开始、如何停止。

3、可直接复制,但那个箭头图片需要自己重新用其它的图片指定。

?

3、动画的开始、暂停、继续、停止。

1、给前台中的Storyboard命名。

2、前台增加四个按钮

3、每个按钮对应一个事件

        private void Button_Click4(object sender, RoutedEventArgs e)
        {
            story.Begin(this,true);
        }

        private void Button_Click5(object sender, RoutedEventArgs e)
        {
            story.Pause(this);
        }

        private void Button_Click6(object sender, RoutedEventArgs e)
        {
            story.Resume(this);
        }

        private void Button_Click7(object sender, RoutedEventArgs e)
        {
            story.Stop(this);
        }

注意:因为前台最初用loaded事件进行动画的触发,所以界面加载的时候,动画也加载,这个时候点击停止、继续等按钮没有用。需要先点一下开始按钮,其它按钮就可以用了。

如果不想让动画与界面一起加载,一种方法是将Loaded事件换成其它的事件,比如与触摸屏有关的TouchUp事件。

原文地址:https://www.cnblogs.com/lonelyxmas/p/10729312.html

时间: 2024-10-10 08:46:19

WPF编程,通过Path类型制作沿路径运动的动画一种方法。的相关文章

WPF编程,通过Path类型制作沿路径运动的动画另一种方法。

原文:WPF编程,通过Path类型制作沿路径运动的动画另一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87358989 上一篇文章给了一个这方面的例子,那个文章里是通过后台按钮事件进行动画的开始.停止.继续等. 这里给出的是通过前台XAML来实现. 1.前台 定义路径.定义运动的主体,这里是一圆. <Path Stroke="Black" StrokeThickness

WPF编程,通过Double Animation动态旋转控件的一种方法。

原文:WPF编程,通过Double Animation动态旋转控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87259162 ? ?1.控件旋转,可直接调用.需要将控件的名称,旋转的角度,时间等参数传进去. /// <summary> /// 控件绕中心旋转动画 /// </summary> /// <param name="element"

WPF编程,通过Double Animation动态缩放控件的一种方法。

原文:WPF编程,通过Double Animation动态缩放控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87260143 ? ?1.控件缩放,可直接调用.需要将控件的名称,缩放的位数,时间等参数传进去. /// <summary> /// 控件绕中心缩放动画 /// </summary> /// <param name="element"

VBS中解决路径带空格的三种方法

vbs中,如果需要运行的程序中带有空格,按照通常的方式往往会提示错误,其实有两种形式不同的解决方法: 在应用程序前后分别加三个双引号,代码如下: [c-sharp] view plaincopyprint? Set wshell=CreateObject("WScript.Shell") wshell.Run  """C:/Program Files/360/360se/360se.exe""",5,True Set wshe

网页设计制作CSS实现隔行换色两种方法

网页设计制作CSS实现隔行换色两种方法 2007-12-21 20:59:44  来源:网页教学网 网页设计制作,CSS实现隔行换色两种方法: 第一种方法: 以下为引用的内容:<style type="text/css">UL.myul1 LI{}</style><ul class="myul1"><li id="li1">111</li><li id="li2"

linux shell脚本编程笔记(四): 获取字符串长度的七种方法

获取字符串长度的七种方法 1. \${#str} 2.awk的length 备注:1) 最好用{}来放置变量2) 也可以用length($0)来统计文件中每行的长度 3.awk的NF 备注: -F为分隔符,NF为域的个数,即单行字符串的长度 4.wc的-L 备注: -L参数1) 对多行文件来说,表示打印最长行的长度! 82,表示/etc/passwd文件最长行的长度为822) 对单行字符串而言,表示当前行字符串的长度! 5.wc -c 备注: 1) -c参数: 统计字符的个数2) -n参数: 去

Servlet 编程 http请求类型

HTTP协议的8种请求类型介绍 HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,具体介绍如下: OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法.也可以利用向Web服务器发送'*'的请求来测试服务器的功能性. HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回.这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息. GET:向特定的资源发出请求. POST:向指定资源提交数据进行处

简单聊一聊那些svg的沿路径运动

之前遇见动画就很想用css实现,显然有些效果是我们力所不能及,实现起来麻烦,效果不好,让人捉急.其实归结起来,不同的动画有自己的优势,根据实际情况进行取舍.本文就告诉大家如何用SVG写出个简单动画.就让我们以路径动画为例来说明吧. 类似于下面动画,这种之前就觉得好炫酷 好吧,就算不说这个,没学习之前,svg实现的loading我也不知道怎么搞得. 当然SVG肯定不是只是来做这个的啦,这只是人家神奇的一部分.SVG的优势是 跨设备能力强.体积小.图像可透明,可以与js交互等等等等,在这里不一一介绍

关于网页导航栏制作的几种方法与常见问题解决(新人向)

无序列表是html页面排版经常用到的非常实用的标签,但是新手在使用无序列表时,经常会在横向排版上出现问题,笔者在这里提供了笔者在使用无序列表制作网页导航栏时的几种方法与常见问题的解决问题.(以css内部样式为例) [注:有同学之前问过我怎么制作一张网页,但只会html,本文用到均为css.故说明:若急需制作导航,无css技术基础的,在<head>标签中加<style rel="stylesheet" type="text/css"><s