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

C# Avalonia 15- Animation- CodeAnimation

例子展现了两种设置动画的方法,各位自行选择。

 CodeAnimation.axaml代码

<Window xmlns="https://github.com/avaloniaui"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"Height="369.6" Width="454.4"x:Class="AvaloniaUI.CodeAnimation"Title="CodeAnimation"><Grid RowDefinitions="*,*,*"><Button Padding="10" Name="cmdGrow" Click="cmdGrow_Click" Height="40" Width="160"HorizontalAlignment="Center"VerticalAlignment="Center"HorizontalContentAlignment="Center"        VerticalContentAlignment="Center">Click and Make Me Grow</Button><Button Grid.Row="1" Padding="10" Click="cmdShrink_Click"HorizontalAlignment="Center"VerticalAlignment="Center"HorizontalContentAlignment="Center"VerticalContentAlignment="Center">Shrink It Back</Button><Button Grid.Row="2" Padding="10" Name="cmdGrowIncrementally" Click="cmdGrowIncrementally_Click"HorizontalAlignment="Center" VerticalAlignment="Center" Width="240">Click and Make Me Grow (Incrementally)</Button></Grid>
</Window>

CodeAnimation.axaml.cs代码

using Avalonia;
using Avalonia.Animation;
using Avalonia.Animation.Easings;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Styling;
using System;
using System.Reactive.Linq;
using System.Threading;namespace AvaloniaUI;public partial class CodeAnimation : Window
{public CodeAnimation(){InitializeComponent();// 在代码里给按钮设置 TransitioncmdGrow.Transitions = new Transitions{new DoubleTransition{Property = Button.WidthProperty,Duration = TimeSpan.FromSeconds(5),Easing = new SineEaseInOut()},new DoubleTransition{Property = Button.HeightProperty,Duration = TimeSpan.FromSeconds(5),Easing = new SineEaseInOut()}};}private void cmdGrow_Click(object? sender, RoutedEventArgs e){// 设置目标值,相当于 WPF 的 TocmdGrow.Width = this.Width - 100;cmdGrow.Height = (this.Height - 100) / 3;cmdGrow.GetObservable(Button.WidthProperty).Subscribe(v =>{if (v == this.Width - 100){Console.WriteLine("Completed");}});}private void cmdShrink_Click(object? sender, RoutedEventArgs e){cmdGrow.Width = 160;cmdGrow.Height = 40;}private void cmdGrowIncrementally_Click(object? sender, RoutedEventArgs e){var animation = new Animation{Duration = TimeSpan.FromSeconds(0.5),Children ={new KeyFrame{Cue = new Cue(1),Setters ={new Setter(Button.WidthProperty, cmdGrowIncrementally.Width + 10)}}},FillMode = FillMode.Forward};_ = animation.RunAsync(cmdGrowIncrementally);}
}

运行效果

image

 

http://www.hskmm.com/?act=detail&tid=6137

相关文章:

  • ubuntu 18.04安装mysql 8.0.41
  • Topaz Photo AI Pro 4.0.4 AI图片智能降噪(win版)
  • 阿里云基础设施 AI Tech Day AI 原生,智构未来——AI 原生架构与企业实践专场
  • 实用指南:LINUX910 CENTOS8 新建虚拟机;重设root密码/时间同步
  • 零基础学习PYthon记录
  • C++ std::unordered_set
  • 如何将一个项目同时提交到GitHub和Gitee(码云)上
  • 基于Matlab的LeNet-5车牌字符识别系统实现
  • MATLAB的交通标志牌识别实现
  • Python常见的数据结构和代码示例
  • Grafana 中文入门教程 | 构建你的第一个仪表盘
  • Gitee DevOps:中国开发者效率革命的数字引擎
  • Topaz Photo AI Pro 4.0.4 AI图片智能降噪
  • 易基因:Nat Genet/IF29:董朝斌团队ChIP-seq等揭示作物株型穗型发育调控新机制 助力表观遗传育种驯化改良(顶刊佳作)
  • Edge浏览器网页长截图
  • Python TensorFlow的CNN-LSTM-GRU集成模型在边缘物联网数据IoT电动汽车充电站入侵检测应用
  • C++多线程编程—线程控制、同步与互斥详解
  • MySQL启动失败:mysqld.log Permis 报错处理.250916
  • 源码管理—密钥硬编码问题
  • 无速度传感器交流电机的扩展Luenberger观测器
  • AI Ping体验记:终于有人做大模型服务的“性能监控”了
  • 数据库原理-第二章——关系型数据库
  • mac 的任务栏 Windows-Style Taskbar For macOS
  • 快手Java一面
  • 详细介绍:Elastic APM 入门指南:快速设置应用性能监控
  • 想找Axure替代?这6个原型设计工具值得一试
  • H5游戏性能优化系列-----cpu相关优化
  • IPA 混淆实战 IPA 混淆、IPA 加固、ipa 文件安全与成品包防护全流程指南
  • 实用指南:javaweb HTML基本介绍/常见标签
  • 文档处理控件Aspose.Words教程:在 C# 中将 Markdown 转换为 PDF