先下載一個gif圖片,這裡提供一個gif圖片示例
線上GIF圖片幀拆分工具 - UU線上工具 (uutool.cn)
使用這個網站將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()
{
// 初始化Icon
NotifyIcon = 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;
}
}
執行專案,效果如圖
簡單實現托盤動圖,你也可以使用更好的圖片,這個動圖不太專業可能顯示不太好看
來著token的分享