先下载一个gif图片,这里提供一个gif图片示例.
将gif切成单张图片

创建一个Avalonia MVVM的项目,将图片copy进去
在项目文件中添加以下代码:
<ItemGroup><None Update="gif\*.png"><CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory></None></ItemGroup>
修改App.axaml.cs代码
public partial class App : Application{private static TrayIcon NotifyIcon;public override void Initialize(){AvaloniaXamlLoader.Load(this);}public override void OnFrameworkInitializationCompleted(){if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop){desktop.MainWindow = new MainWindow{DataContext = new MainWindowViewModel(),};}InitializeLogo();base.OnFrameworkInitializationCompleted();}private static void InitializeLogo(){// 初始化IconNotifyIcon = new TrayIcon();// 初始图片var size = 1;_ = Task.Run(async () =>{while (true){// 添加托盘图标,await Dispatcher.UIThread.InvokeAsync(() =>{using var stream =File.OpenRead(Path.Combine(AppContext.BaseDirectory, "gif", $"{size++}.png"));// 定义图片的总数,达到总数从1开始继续循环if (size == 151){size = 1;}return NotifyIcon.Icon =new WindowIcon(stream);});// 修改动态渲染速度await Task.Delay(40);}});NotifyIcon.ToolTipText = "Logo动图测试";NotifyIcon.IsVisible = true;}}
执行项目,效果如图

简单实现托盘动图,你也可以使用更好的图片,这个动图不太专业可能显示不太好看