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

C# Avalonia 16- Animation- SampleViewer - SimpleExample

SampleViewer.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"Width="800" Height="600"xmlns:local="using:AvaloniaUI"x:Class="AvaloniaUI.SampleViewer"Title="SampleViewer"><TabControl><TabControl.Styles><Style Selector="TabItem"><Setter Property="FontSize" Value="17"/><Setter Property="FontWeight" Value="Bold"/></Style></TabControl.Styles><TabItem Header="颜色变化效果"><local:SimpleExample/></TabItem><TabItem Header="跟随效果"><local:FollowExample/></TabItem><TabItem Header="可复用跟随效果"><local:ReusableFollowExample/></TabItem><TabItem Header="粒子效果"><local:ParticleEffectExamples/></TabItem></TabControl></Window>

SampleViewer.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;namespace AvaloniaUI;public partial class SampleViewer : Window
{public SampleViewer(){InitializeComponent();}
}

Tab - SimpleExample.axaml代码

<UserControl 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"mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"x:Class="AvaloniaUI.SimpleExample"><UserControl.Resources><SolidColorBrush x:Key="AnimatedBrush"/></UserControl.Resources><StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"><Rectangle Width="50" Height="50"Fill="{StaticResource AnimatedBrush}"/></StackPanel>
</UserControl>

SimpleExample.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Media;
using Avalonia.Threading;
using Shares.Avalonia;
using System;namespace AvaloniaUI;public partial class SimpleExample : UserControl
{private readonly SolidColorBrush animatedBrush;private AnimationPlayer animation;public SimpleExample(){InitializeComponent();animatedBrush = (SolidColorBrush)Resources["AnimatedBrush"]!;animation = new AnimationPlayer { Duration = 2.0, Loop = true };animation.At(0).Ease("ElasticEaseOut").PlayLocal(progress =>{// 颜色平滑过渡animatedBrush.Color = InterpolateColor(Colors.Red, Colors.Blue, progress);});animation.Start();}private static Color InterpolateColor(Color from, Color to, double t){byte r = (byte)(from.R + (to.R - from.R) * t);byte g = (byte)(from.G + (to.G - from.G) * t);byte b = (byte)(from.B + (to.B - from.B) * t);return Color.FromRgb(r, g, b);}
}

运行效果

image

 

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

相关文章:

  • 2025年安恒信息深度解析:AI与数据安全双轮驱动的技术演进全景
  • 习题-归纳定义原理
  • 对话式 AI 年度春晚:Convo AIRTE2025 全议程解锁
  • 博客的加载速度和大小的优化、优化再优化
  • 2025年10月中国宝宝辅食品牌推荐榜:深海去刺鱼领衔对比
  • 《51测试天地》电子杂志 第八十六期发布文章:打造基于 WebSocket + CDP 的 Selenium 替代方案
  • 实用指南:数字孪生背后的大数据技术:时序数据库为何是关键?
  • Qt和ffmpeg结合打造gb28181推流/支持udp和tcp被动以及tcp主动三种方式
  • 【每日积累】浅谈mvc,mvvm,mvp
  • Random VIMs
  • 66页习题
  • 【React系列】一文让你了解React中Component和PureComponent差异之分
  • DIY ChatGPT 一周狂揽 27k Star「GitHub 热点速览」
  • Active Directory安全技巧:FSMO角色管理与PowerShell查询
  • 【React系列】React.memo() vs useMemo()
  • 联合体与枚举
  • 【每日积累】javascript 一文弄懂eval
  • 量子计算25年发展历程与技术挑战
  • 腾讯云COS通过CDN加速配置指南 - 教程
  • 前端: 如何优化列表大批量的数据渲染
  • 【模块化解读】commonjs vs commonjs2 exports vs module.exports
  • 【GitHub每日速递 251021】一键将全新Arch安装变身超美现代Web开发系统!Omarchy太神了
  • 藏宝阁
  • [Mongodb]mongodb的安装以及增删改查
  • PHP 8.5 新特性 闭包可以作为常量表达式了
  • 【JavaScript-基础】split,splice,slice 三者的用法
  • 2025 代码源 CSP-S 模拟赛复盘
  • 2025.10.21——1绿
  • 【JavaScript-基础】map、forEach、for、for in、for of等的区别
  • dotnet 利用 Windows 注册表实现开机自动启动