当前位置: 首页 > news >正文

WPF 动画 插值动画、关键帧动画、路径动画

WPF动画,分为三种:插值动画、关键帧动画、路径动画

2.1 插值动画:
    1)定义:插值动画是指,属性值从某一个值,经过一段时间后,连续变化值另一个值的动画。
        例如宽度属性,类型为double,可以设定动画为在1s的时间内,值从0变到10。此时WPF内部会采用插值算法,填充1与10之间的值。
    2)命名规则:数据类型+Animation。例如double类型动画:DoubleAnimation

2.2 关键帧动画:
    1)定义:对于属性类型为离散量类型的,因为无法进行插值运算。因此只能填充“帧”。
        例如Name属性,类型是string。当属性值从“raymond” 变到 “jack”的时候,是无法进行插值运算的。此时就只能用关键帧来代替。在某一个时候,显示“raymond”,然后在下一个时候,显示“jack”。
    2)命名规则:数据类型+AnimationUsingKeyFrames。例如double类型:DoubleAnimationUsingKeyFrames

2.3 路径动画:
    1)路径动画,是指让某个元素用来沿着路径的方向进行变换的动画。
    2)命名规则:数据类型+AnimationUsingPath。例如double类型DoubleAnimationUsingPath

Storyboard 是动画的容器

  1. BeginStoryboard 开始播放
  2. PauseStoryboard 暂停播放
  3. StopStoryboard 停止播放
  4. ResumeStoryboard 恢复播放、继续播放

DoubleAnimation

》》 xmal方式

<Button Name="btn" Content="Click Me" HorizontalAlignment="Left" VerticalAlignment="Top"><Button.Triggers><EventTrigger RoutedEvent="{x:Static Button.MouseEnterEvent}"><BeginStoryboard Name="sizeStoryboard"><Storyboard Storyboard.TargetName="btn" ><DoubleAnimation From="{Binding Path=ActualWidth,ElementName=btn}" To="100" Duration="0:0:1" Storyboard.TargetName="btn" Storyboard.TargetProperty="Width"/><DoubleAnimation From="{Binding Path=ActualHeight,ElementName=btn}" To="50" Duration="0:0:1" Storyboard.TargetName="btn" Storyboard.TargetProperty="Height"/></Storyboard></BeginStoryboard></EventTrigger><!--下面这个触发器,只是为了演示效果,把停止、暂停、继续  放在一起啦--><EventTrigger RoutedEvent="{x:Static Button.MouseLeaveEvent}"><!--停止Storyboard:属性值会回到原始状态--><StopStoryboard BeginStoryboardName="sizeStoryboard" /><!--暂停Storyboard--><PauseStoryboard BeginStoryboardName="sizeStoryboard"/><!--继续Storyboard:继续已经暂定的Storyboard--><ResumeStoryboard BeginStoryboardName="sizeStoryboard"/></EventTrigger></Button.Triggers>
</Button>

如果多个动画都是应用同一个元素,同一个属性,可以将Target、TargetName、TargetProperty等附加属性写在Storyboard中。
》》》code
在这里插入图片描述
》》》或者

在这里插入图片描述

Private void DemoButton_Click(object sender,RoutedEventArgs e)
{DoubleAnimation dAnimation = new DoubleAnimation();dAnimation.From = 100;dAnimation.To = 300;dAnimation.Duration = new Duration(TimeSpan.FromSeconds(2));btn.BeginAnimation(Button.WidthProperty,dAnimation);
}

这里需要说明几点:
 1)Animation不能直接在xaml中写。如果要在xaml中写Animation,则需要结合Storyboard。
 2)要应用动画,需要调用元素的BeginAnimation()方法。需要注意,BeginAnimation()方法由IAnimatable接口定义(只要实现了该接 口,都会有这个方法),但只有元素调用这个方法才能应用动画。如果是Animation类的实例调用该方法,没有意义,因为没有指定动画应用于哪个对象。

资源方式 动画

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Pod基础使用
  • websocket拦截插件
  • 无线数传模块有啥特点?
  • 万象公文常见问题的处理方法
  • Ubuntu22安装MySQL8,并关闭大小写
  • [大模型]配置文件-Langchain-Chatchat-V0.3 (1)
  • 单个像素的威胁:微小的变化如何欺骗深度学习系统
  • 哈工深、NUS等联合提出全新信息抽取基准任务:细粒度定位的统一多模态信息抽取...
  • leetcode349:两个数组的交集
  • 原生js用Export2Excel导出excel单级表头和多级表头数据方式实现
  • Python:什么是WSGI
  • 软件定义网络(SDN):网络架构的未来
  • HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
  • 如何应对突发技术故障和危机:开发团队的应急策略
  • 【C语言小项目】五子棋游戏
  • $translatePartialLoader加载失败及解决方式
  • 2017-09-12 前端日报
  • es的写入过程
  • gulp 教程
  • JS学习笔记——闭包
  • MySQL-事务管理(基础)
  • PHP的Ev教程三(Periodic watcher)
  • scrapy学习之路4(itemloder的使用)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • windows下mongoDB的环境配置
  • 工程优化暨babel升级小记
  • 前端面试之闭包
  • 算法-插入排序
  • 正则与JS中的正则
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ​一些不规范的GTID使用场景
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #pragma multi_compile #pragma shader_feature
  • (3)llvm ir转换过程
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (力扣)循环队列的实现与详解(C语言)
  • (十六)一篇文章学会Java的常用API
  • (十三)Flink SQL
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (已解决)什么是vue导航守卫
  • (原创)可支持最大高度的NestedScrollView
  • (杂交版)植物大战僵尸
  • (转)甲方乙方——赵民谈找工作
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET/C# 使用反射注册事件
  • .Net6 Api Swagger配置
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .net操作Excel出错解决