C# WPF 路径动画

news/2024/11/22 17:22:03/

路径动画:一个东西沿着你画的的线跑。
微软对这个有很详细的说明,有需要请参照微软Learn网站
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
cs的代码

PathGeometry pathGeometry = new PathGeometry();PathFigure pathFigure = new PathFigure();//pathFigure.IsClosed = true;pathFigure.StartPoint = new Point(300, 200);LineSegment lineSegment = new LineSegment();lineSegment.Point = new Point(300, 400);pathFigure.Segments.Add(lineSegment);lineSegment = new LineSegment();lineSegment.Point = new Point(700, 400);pathFigure.Segments.Add(lineSegment);lineSegment = new LineSegment();lineSegment.Point = new Point(700, 700);pathFigure.Segments.Add(lineSegment);;pathFigure.Segments.Add(lineSegment);PathFigureCollection pathFigures = new PathFigureCollection();pathFigures.Add(pathFigure);pathGeometry.Figures.Add(pathFigure);pathGeometry.Freeze();System.Windows.Shapes.Path path = new System.Windows.Shapes.Path();path.Data = pathGeometry;path.Stroke = Brushes.Green;path.StrokeThickness = 5;canvas2.Children.Add(path);MatrixAnimationUsingPath matrixAnimationUsingPath = new MatrixAnimationUsingPath();matrixAnimationUsingPath.PathGeometry = pathGeometry;matrixAnimationUsingPath.Duration = TimeSpan.FromSeconds(5);matrixAnimationUsingPath.RepeatBehavior = RepeatBehavior.Forever;matrixAnimationUsingPath.DoesRotateWithTangent = true;Storyboard.SetTargetName(matrixAnimationUsingPath, "ButtonMatrixTransform2");Storyboard.SetTargetProperty(matrixAnimationUsingPath, new PropertyPath(MatrixTransform.MatrixProperty));Storyboard pathAnimationStoryboard = new Storyboard();pathAnimationStoryboard.Children.Add(matrixAnimationUsingPath);pathAnimationStoryboard.Begin(this);

这里是xaml的内容

<Window x:Class="WPF_Test.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPF_Test"xmlns:control="clr-namespace:WPF_Test.Combox"mc:Ignorable="d"Title="MainWindow" Height="800" Width="1200" Loaded="Window_Loaded"><Grid><Canvas x:Name="canvasMain"><Button Content="123" Foreground="Black" x:Name="machineHand" Background="Gold" HorizontalAlignment="Left" VerticalAlignment="Top" Width="80" Height="73" Canvas.Left="14" Canvas.Top="301" Margin="30,67,0,0"><Button.RenderTransform><TranslateTransform x:Name="machineAnimation"/></Button.RenderTransform></Button><Button  Content="Button" Click="Button_Click" HorizontalAlignment="Left" Height="45" Margin="30,275,0,0" VerticalAlignment="Top" Width="135"/><Label Content="Label" x:Name="label01" FontSize="16px" HorizontalAlignment="Left" Margin="160,87,0,0" VerticalAlignment="Top" Width="225" RenderTransformOrigin="0.754,-0.658"/><Button Content="Button" Click="Button_Click_1" Canvas.Top="530" Width="195" HorizontalAlignment="Center" Height="50" VerticalAlignment="Top"/><Button Content="Button" Click="Button_Click_2" Canvas.Top="615" Width="195" Height="50" HorizontalAlignment="Left" VerticalAlignment="Top"/><Button Content="Button" Click="Button_Click_3" Canvas.Top="695" Width="195" Height="50" HorizontalAlignment="Center" VerticalAlignment="Top"/><Canvas x:Name="canvas2"><Canvas.Resources><PathGeometry x:Key="path"><PathGeometry.Figures><PathFigureCollection><PathFigure IsClosed="True" StartPoint="50,100"><PathFigure.Segments><PathSegmentCollection><LineSegment Point="100,500" /><LineSegment Point="500,50" /></PathSegmentCollection></PathFigure.Segments></PathFigure></PathFigureCollection></PathGeometry.Figures></PathGeometry><Storyboard x:Key="pathStoryboard" ><MatrixAnimationUsingPath PathGeometry="{StaticResource path}"Storyboard.TargetName="ButtonMatrixTransform"Storyboard.TargetProperty="Matrix"DoesRotateWithTangent="True"Duration="0:0:10" RepeatBehavior="Forever" ></MatrixAnimationUsingPath></Storyboard></Canvas.Resources><Canvas.Triggers><EventTrigger RoutedEvent="Control.Loaded"><BeginStoryboard Storyboard="{StaticResource pathStoryboard}" /></EventTrigger></Canvas.Triggers><Path Data="{StaticResource path}" Stroke="Black" StrokeThickness="5" /><Button Width="50" Height="20" Background="Yellow"><Button.RenderTransform><MatrixTransform x:Name="ButtonMatrixTransform" /></Button.RenderTransform></Button><Button x:Name="aButton" Content=">>>" FontSize="50" BorderThickness="0" Width="110" Height="50" Background="Transparent" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="35" Canvas.Top="-35"><Button.RenderTransform><MatrixTransform x:Name="ButtonMatrixTransform2" /></Button.RenderTransform></Button></Canvas></Canvas></Grid>
</Window>

http://www.ppmy.cn/news/646942.html

相关文章

Spring Cloud Alibaba体系使用OpenFeign与RestTemplate作为RPC组件

前言 ​ 本篇将介绍Spring Cloud Alibaba使用OpenFeign和RestTemplate进行RPC调用&#xff0c;并且将介绍两种RPC工具如何集成Sentinel进行系统保护。 OpenFeign OpenFeign介绍 ​ OpenFeign是一种声明式、模板化的HTTP客户端。 在Spring Cloud中使用OpenFeign&#xff0c;…

premiere直接使用计算机素材,Premiere使用技巧之视频捕捉 -电脑资料

Adobe Premiere Pro提供了较为专业的视频捕捉功能&#xff0c;可以高质量的捕捉模拟信号(通过视频捕捉卡)和数字信号(通过IEEE 1394)&#xff0c; 在使用视频捕捉卡捕捉视频素材时&#xff0c;需要在工程设定的时候选择该视频捕捉卡提供硬件支持的视频压缩格式。而通过IEEE 139…

计算机属于什么学1001计算机属于什么学,怎样学电脑(初学电脑先学什么)

怎样学电脑(初学电脑先学什么)初学电脑应该先学什么&#xff0c;本文按照从内到外&#xff0c;从硬件到软件的顺序给各位朋友做个简单的介绍。更深层次的电脑知识&#xff0c;不是本人的专业范围&#xff0c;请咨询电脑专家。 从外表看&#xff0c;不论是台式的还是笔记本式的 …

初识无影云电脑

初闻不知词中意&#xff0c;再听已是无影人 前言一&#xff0c;什么是无影云&#xff1f;1.1 官方描述&#xff1a;1.2 个人理解&#xff1a; 二&#xff0c;无影云能做什么&#xff1f;2.1 工作2.2 生活 三&#xff0c;无影云怎么使用&#xff1f;3.1 Web端3.2 PC端3.3 移动端…

ubuntu软件:录制视频和截图工具,压缩视频

1. 自带录制视频工具&#xff1b; 使用方式&#xff1a; 无需下载 开始录屏/结束录屏&#xff1a;Ctrl Alt Shift r 当看到 Ubuntu 桌面的右上方多了一个红色的小圆点&#xff0c;代表正在录制 注意&#xff1a; 录屏默认的时长30秒&#xff0c;超时会自动结束&#xff01…

android 视频 宽高比,科普:什么是视频宽高比?

吴川 华南区技术负责人 概要 视频宽高比是指图像的宽度和高度之间的比率。视频质量是指在一定的宽高比视频中的像素密度数越高越清晰。如何转换视频的宽高比例及视频格式?本文一一为你讲解。 一、什么是视频宽高比? 宽高比即是视频显示的宽度与高度的比例。宽高比最初用于电影…

视频剪辑软件如何保存项目工程或快照?

我们都知道&#xff0c;Vegas作为一款视频剪辑软件&#xff0c;预览窗口也是比较小。当我们在进行一些细节的调整时&#xff0c;会显得十分麻烦&#xff0c;所以小编就以这个问题&#xff0c;来教一下大家如何解决吧&#xff01; 方法一&#xff1a; 有时预览窗口也会跟显示器的…

什么软件可以搜索计算机知识,生活必备电脑知识技巧大全

很多时候&#xff0c;在操作电脑时遇到一些操作特别繁琐的步骤或有些故障用某种方法操作不了&#xff0c;常常会使人非常抓狂&#xff0c;下面就让小编带你去看看生活必备电脑知识技巧大全&#xff0c;希望能帮助到大家! 禁止自动安装流氓软件 方法一、通过操作系统的applocker…