Avalonia 实现动态托盘
2024-10-21 03:27:25
先下载一个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的分享
最新文章
- EntityFramework 7 开发纪录
- 微信公众平台教程和SDK收集
- iOS.AppThinning-iOS9-new-feature-for-app-thinning-bitcode-odr-slicing
- 获取发布版SHA1获取
- 通用权限管理系统Ver2.0
- (原)python中matplot中获得鼠标点击的位置及显示灰度图像
- php 大转盘抽奖
- Unity 容器教程
- Python正则表达式返回首次匹配到的字符及查询的健壮性
- 01_Linux学习_基础知识
- python之__call__()
- pyhton 爬虫爬去吾爱精品软件的信息并写入excel
- python 基础5 初级函数
- PAT-L2-007 家庭房产 (union-find) 小数据 没有什么是暴力解决不了的!!
- LeetCode - Two Sum IV - Input is a BST
- [PHP]将回调函数作用到给定数组的单元上
- 【Android API】Android 4.1 API官方文档详解
- redis过期回调以及键空间通知
- Git中特别的命令
- webpy 模版语言