WPF —— 后台实现fromto动画实例

标签页

XML 复制代码
<Button Width="100"
        Height="40"
        Content="点击开始动画"
        Click="Button_Click"
        Name="b1"
        >
</Button>

<!--HorizontalAlignment="Left"-->
    <!--VerticalAlignment="Top
  添加这俩个属性的目的是为了按钮变换的时候沿着一个方向进行放大
-->
<Button Width="100" Height="40"
        Content="做动画的按钮"
        Name="b2" 
        HorizontalAlignment="Left"
        VerticalAlignment="Top">
    
</Button>

1 创建动画对象

cs 复制代码
 DoubleAnimation 动画1  = new DoubleAnimation();

2 创建标签的动画开始的状态

cs 复制代码
动画1.From = b2.Width;

3 设置动画结束状态

// 动画1.To = 250;

By 通过多少变成To值,To值-初始值=250-100=150

cs 复制代码
动画1.By = 150;

4 动画的时间 TimeSpan.FromSeconds(5) 5s

cs 复制代码
动画1.Duration = new Duration(TimeSpan.FromSeconds(5));

6设置一些常用的属性

// 动画结束的时候保持结束状态值/开始的状态值

cs 复制代码
动画1.FillBehavior = FillBehavior.Stop;//开始的状态值
动画1.FillBehavior = FillBehavior.HoldEnd;//结束状态

7 动画无限重复执行

cs 复制代码
动画1.RepeatBehavior = RepeatBehavior.Forever;

8 支持相反方向的动画

cs 复制代码
动画1.AutoReverse = true;

9 延迟执行动画

cs 复制代码
动画1.BeginTime =TimeSpan.FromSeconds(2);

10 AccelerationRatio 速度变快这个过程所占的时间的比例

//和 DecelerationRatio 速度变慢这个过程所占的时间的比例

// 加速 5 * 0.3 = 1.5s 减速 5*0.3=1.5,剩余2s匀速

动画1.AccelerationRatio = 0.3;

//动画1.DecelerationRatio = 0.3;

11 动画结束的事件,当一个动画结束之后可以在事件函数再开启另一个动画

//这俩个动画就是相互独立的

//必须写在动画开启之前 BeginAnimation

cs 复制代码
动画1.Completed += 动画1_Completed;
cs 复制代码
private void 动画1_Completed(object? sender, EventArgs e)
{
    DoubleAnimation 动画2 = new DoubleAnimation();
    动画2.From = b2.Height;
    动画2.To = 250;
    动画2.Duration = new Duration(TimeSpan.FromSeconds(5));
    
    b2.BeginAnimation(Button.HeightProperty, 动画2);
}

5 开启动画 参数1是做动画的属性 参数2是动画实例对象,参数2也可以写成null,写成null是

//停止动画 b1.BeginAnimation(Button.WidthProperty, null)

cs 复制代码
 b2.BeginAnimation(Button.WidthProperty, 动画1);
相关推荐
志栋智能几秒前
超自动化安全:释放安全专家创造力的钥匙
运维·服务器·网络·人工智能·自动化
历程里程碑几秒前
55 Linux epoll高效IO实战指南
java·linux·服务器·开发语言·前端·javascript·c++
Mapmost2 分钟前
【Mapmost 渲染指北】利用LUT快速构建场景色调
前端
踩着两条虫2 分钟前
VTJ:核心概念
前端·低代码·ai编程
水彩橘子4 分钟前
kea dhcp 服务器HA 配置
运维·服务器
Moment4 分钟前
作为前端,如果使用 Langgraph 实现第一个 Agent
前端·javascript·后端
实心儿儿11 分钟前
C++ —— 进程控制 - 进程程序替换
linux·运维·服务器
SilentSamsara16 分钟前
Service 与 Ingress:从 ClusterIP 到云厂商 ALB 的完整流量路径
linux·运维·服务器·微服务·kubernetes·k8s·运维开发
相信神话202117 分钟前
第六章:迷你项目:「投壶」单关卡小游戏
前端
晴天丨20 分钟前
🔔 如何实现一个优雅的通知中心?(Vue 3 + 消息队列实战)
前端·vue.js