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);} }
运行效果