首页 > 其他分享 >WPF —— 后台实现fromto动画实例

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

时间:2024-04-07 20:00:13浏览次数:14  
标签:动画 BeginAnimation fromto b2 DoubleAnimation new WPF FillBehavior

标签页

<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 创建动画对象

 DoubleAnimation 动画1  = new DoubleAnimation();

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

动画1.From = b2.Width;

3 设置动画结束状态
           // 动画1.To = 250;

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

动画1.By = 150;

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

动画1.Duration = new Duration(TimeSpan.FromSeconds(5));

6设置一些常用的属性
            // 动画结束的时候保持结束状态值/开始的状态值

动画1.FillBehavior = FillBehavior.Stop;//开始的状态值
动画1.FillBehavior = FillBehavior.HoldEnd;//结束状态

 7 动画无限重复执行

动画1.RepeatBehavior = RepeatBehavior.Forever;

8 支持相反方向的动画

动画1.AutoReverse = true;

9 延迟执行动画

动画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 

动画1.Completed += 动画1_Completed;
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)

 b2.BeginAnimation(Button.WidthProperty, 动画1);

标签:动画,BeginAnimation,fromto,b2,DoubleAnimation,new,WPF,FillBehavior
From: https://blog.csdn.net/lu2023_8_6/article/details/137475858

相关文章

  • 敌人——角色蓝图父类,子类以及动画蓝图创建
    目标资源处理(略)动画蓝图创建角色蓝图父类及子类的创建核心思想将角色蓝图分为父类和子类方便之后其它敌人的制作动画蓝图中的状态机也是模块化设计,可以根据不同的敌人调用不同的动画资源1.动画蓝图创建动画蓝图中转换为敌人父类蓝图,方便后续调用基础的动画图表编写......
  • WPF datagrid mvvm multi select via customize datagrid
    usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;namespaceWpfApp39{publicclassMultiSelectDataGrid:D......
  • C#开发之WPF项目中权限控制的实现(attribute)
    1功能描述实现一个权限检查机制,以确保用户根据其权限级别进行相应的操作。定义四级权限:Operator,Maintenance,Supervisor,Administrator,每一级权限都有其特定的操作范围。能够根据用户的权限级别判断用户是否有权执行特定的操作。2设计分析如果实现为接口形式,那么每次在需......
  • WPF布局控件汇总
    1.Grid表格布局Grid为WPF中最常用的布局容器,作为View中的主要组成部分,负责框架中整体的页面布局。注意:Grid的列宽与行高可采用固定、自动、按比例三种方式定义。固定长度:值为一个确定的数字自动长度:值为Auto,实际作用就是取实际控件所需的最小值比例长度:*表示占用剩余的全......
  • WPF开发一个可以自适应排列的Panel控件
    一.控件介绍    初看标题可能无法理解,我们看看什么是自适应排列。乍一看它有点像WrapPanel控件,都是从左至右排列,如果一行排列不下就换行继续排列,但是细看你就会发现不对,WrapPanel控件行尾是不会对齐的,也就是说只要WrapPanel的子控件的宽度不一致,每一行的末尾就会必定留下一......
  • Wpf BackgroundWorker WorkerSupportsCancellation CancellationPending
    //xaml<Windowx:Class="WpfApp37.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic......
  • Wpf BackgroundWorker DoWork RunWorkerCompleted
    //xaml<Windowx:Class="WpfApp37.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic......
  • WPF登录界面样例
    XAML文件内容如下1<Windowx:Class="ERP.Views.Login"2xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4xmlns:d="......
  • 在RichTextBox mvvm中使用wpf工具包在插入符号处插入文本
    ,可以通过以下步骤实现:首先,确保你已经在项目中引用了WPF工具包。可以通过在VisualStudio中的项目引用中添加对WPF工具包的引用来完成。在你的MVVM模式中,创建一个名为"InsertTextCommand"的命令类,用于处理插入文本的逻辑。这个命令类应该实现ICommand接口,并且包含一个Execute方......
  • 强制设置和恢复依赖属性值(类似WPF内置的Style.Trigger和Template.Trigger)
    WPF元素的依赖属性的值由众多规则决定,最高优先级的规则决定依赖属性的最终当前值。如本地值>继承值>默认值。可以临时忽略一切规则,强制为依赖属性指定一个值,相当于强行插入一个最高优先级规则,后续可以删除此强制值(最高优先级规则),将依赖属性的值恢复成原来的计算规则。这个......