Avalonia 实现动态托盘

简介: Avalonia 实现动态托盘

先下载一个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的分享

目录
相关文章
|
3月前
|
开发框架 前端开发 搜索推荐
在WInform开发中实现工具栏/菜单的动态呈现
在WInform开发中实现工具栏/菜单的动态呈现
Revit二次开发DockableDialog (可停靠窗体)
Revit二次开发DockableDialog (可停靠窗体)
Revit二次开发DockableDialog (可停靠窗体)
Revit 二次开发添加WPF窗口的办法
Revit 二次开发添加WPF窗口的办法
Revit 二次开发添加WPF窗口的办法
|
XML 前端开发 数据格式
UWP Windows10开发更新磁贴和动态更新磁贴
原文:UWP Windows10开发更新磁贴和动态更新磁贴 下面将介绍两种方式如何在windows10 uwp开发中如何更新应用磁贴: 实际上windows的磁贴就是用xml实现的,你只需要创建相应格式的xml就可以实现动态磁贴了 一,手动更新磁贴 二,轮询更新磁贴 【第一种方式】手动更新磁...
1154 0
|
XML C# 数据格式
UWP-动态磁贴
原文:UWP-动态磁贴 来自:IT追梦园 (http://www.zmy123.cn/?p=1172)   UWP应用的一大特色就是动态磁贴,所以,你的应用如果还没有设置动态磁贴,那么,和我一起来为应用加上动态磁贴吧! UWP动态磁贴可以通过消息推送实现,可以通过后台任务实现。
1371 0
|
前端开发
Win10 UWP 开发系列:使用SplitView实现汉堡菜单及页面内导航
原文:Win10 UWP 开发系列:使用SplitView实现汉堡菜单及页面内导航 在Win10之前,WP平台的App主要有枢轴和全景两种导航模式,我个人更喜欢Pivot即枢轴模式,可以左右切换,非常方便。
1420 0