制作动画路径-Path

Path中有个Date属性,用来获取或设置指定要绘制的形状的 Geometry。

所以我们画一个圆来和一个椭圆路径,是圆在椭圆路径上移动,我们先画个圆。

<Ellipse x:Name="e1" Stroke="Black" Width="50" Height="50" Fill="Red" Margin="0,0,228,211"></Ellipse>

在画一个路径

<Path x:Name="p1" Stroke="Blue"> <Path.Data> <EllipseGeometry x:Name="eg1" Center="120,100" RadiusX="100" RadiusY="50"> </EllipseGeometry> </Path.Data> </Path>

这里给这个路径的EllipseGeometry取个name叫eg1,后面会用到。
这下我们可以对这个Ellipse进行RenderTransform,下面看代码。
<Ellipse x:Name="e1" Stroke="Black"  Width="50" Height="50" Fill="Red" Margin="0,0,228,211">
            <Ellipse.RenderTransform>
                <TransformGroup>
                    <TranslateTransform X="-25" Y="-15"/>
                    <MatrixTransform x:Name="m1"/>
                </TransformGroup>
            </Ellipse.RenderTransform>
            <Ellipse.Triggers>
                <EventTrigger RoutedEvent="Page.Loaded">
                    <BeginStoryboard>
                        <Storyboard x:Name="s1" RepeatBehavior="Forever">
                            <MatrixAnimationUsingPath x:Name="ma1"
                                                        Storyboard.TargetName="m1"
                                                      Storyboard.TargetProperty="Matrix"
                                                      Duration="0:0:5"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Ellipse.Triggers>
        </Ellipse>

这里我们用到Storyboard中的MatrixAnimationUsingPath,

通过使用 PathGeometry 生成动画值,从而对 Matrix 属性的值进行动画处理。此动画可用于沿着路径移动可视对象。

这里MatrixAnimationUsingPath绑定的目标是m1,绑定它的属性是Matrix,这里的m1是MatrixTransform,它是

创建一个任意仿射矩阵变换,用于操作二维平面中的对象或坐标系。

这里的<TranslateTransform X="-25" Y="-15"/> 是给圆调整它沿着椭圆路径旋转的平移度。

TranslateTransform:通过使此 Graphics 的变换矩阵左乘指定的平移来更改坐标系统的原点。

我们还要用个button来加载和启动这个路径

private void button1_Click(object sender, RoutedEventArgs e){PathGeometry pathGeometry=new PathGeometry();pathGeometry.AddGeometry(eg1);ma1.PathGeometry = pathGeometry;s1.Begin(e1);}

我们按F5调试下。

转载于:https://www.cnblogs.com/dingli/archive/2011/01/17/1937052.html

MSDN 教程短片 WPF 16(Path路径)相关推荐

  1. MSDN 教程短片 WPF 20(绑定3-ObjectDataProvider)

    上次讲到数据模板的绑定(DataTemplate),今天在这基础上我进行了延伸.下面我们把数据绑定到ObjectDataProvider上. ObjectDataProvider:包装和创建可以用作绑 ...

  2. MSDN 教学短片 WPF 12(画布)

    画布 Canvas画布 它的作用域是: 定义一个区域,在该区域中可以使用相对于 Canvas 区域的坐标显式定位子元素. Canvas 具有默认值为零的 Height 和 Width 属性,除非它是可 ...

  3. 沿着path路径做动画

    沿着path路径做动画 路径 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 16/1/26 ...

  4. PS如何生成svg代码格式的path路径 - PS技巧篇

    PS如何生成svg代码格式的path路径 - PS技巧篇 原文标题:PS中的svg工具是怎么使用的 点击查看:百度教程 技巧,切图出来的小图片,可以通过ps打开,右键生成SVG格式的代码. 以上就是关 ...

  5. Cinemachine教程 | Unity中如何制作路径动画?

    摘要:在Unity中制作路径动画是有挺多方式的,基于Cinemachine的Dolly Path是一个简单便捷的方法,咱们来快速的学习一下吧! 洪流学堂,让你快人几步.你好,我是跟着大智(VX: zh ...

  6. 微信小程序使用百度api获取天气信息 —— 微信小程序教程系列(16)

    之前已经介绍过,如何使用百度地图api来获取地理位置信息 微信小程序的百度地图获取地理位置 -- 微信小程序教程系列(15) 下面介绍使用百度api来获取天气信息. 1> 第一步:先到百度开放平 ...

  7. sudo找不到命令:修改sudo的PATH路径

    sudo有时候会出现找不到命令,而明明PATH路径下包含该命令,让人疑惑.其实出现这种情况的原因,主要是因为当 sudo以管理权限执行命令的时候,linux将PATH环境变量进行了重置,当然这主要是因 ...

  8. 修改系统路径 linux,Linux修改sudo的PATH路径的解决方法

    众所周知,Linux系统sudo命令可以搜索PATH下的命令,但是有时候明明PATH下有某些命令,为什么sudo就是搜索不到.这可能是因为Linux自动对PATH进行重置,改变了sudo命令搜索的路径 ...

  9. 系统模块——什么是系统模块、path 路径操作、相对路径VS绝对路径

    系统模块 什么是系统模块 Node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块 系统模块fs 文件操作 系统模块path 路 ...

最新文章

  1. 5.1 实验五 四则运算单元测试
  2. 在tnsnames.ora中配置监听
  3. 自由存储区和堆的区别_区块链发展阶段:IPFS和Filecoin赋能分布式存储
  4. geotif 添加坐标_python – 如何获取geotif中单元格的坐标?
  5. 最优化学习笔记(十二)——基本共轭方向算法(续)
  6. ram自己写?用IP?
  7. ESP32 ESP-IDF开发环境搭建,Windows下基于ESP-IDF | Cmake | VScode插件的 ESP32 开发环境搭建
  8. java密码查询回显和修改流程_[求助]数据库信息如何回显在我的程序界面中
  9. 没有Angular 3,下一个Angular主版本将是Angular 4
  10. 做跨境电商,先要有个靠谱的商城系统
  11. chrome插件-Web开发者助手 FeHelper
  12. 凯恩帝串口通信怎么设置_北京凯恩帝(KND)-100M数控系统操作经验与技巧
  13. 一支雪糕卖66?钟薛高,你就偷着乐吧
  14. “她经济”时代,兜售少女心的乙女游戏将成新风口?
  15. 什么是CSM(Certified Scrum Master) 敏捷教练认证?
  16. 阿里云域名购买和配置
  17. 在Excel Power Query中提取数据
  18. 多类别分类——吴恩达课程作业python代码实现
  19. DeFi+NFT出圈姿势盘点,NFT借贷等应用领域值得关注
  20. 毕业设计 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

热门文章

  1. c++中的vector的常见使用
  2. debian10 nfs简单搭建
  3. 熵,交叉熵,散度理解较为清晰
  4. PyTorch的torch.cat
  5. Google Colab使用教程
  6. 安装win下的Anaconda ----针对python3.6.4版本
  7. jieba中文分词源码分析(四)
  8. viterbi维特比算法和隐马尔可夫模型(HMM)
  9. 使用 Pytorch 实现 skip-gram 的 word2vec
  10. LeetCode简单题之丢失的数字