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的分享

目录
相关文章
关于 C#使用Console.WriteLine调试没有命令行输出 的解决方法
关于 C#使用Console.WriteLine调试没有命令行输出 的解决方法
关于 C#使用Console.WriteLine调试没有命令行输出 的解决方法
|
移动开发 JavaScript 前端开发
使用 JavaScript 进行跨域请求
使用 JavaScript 进行跨域请求
480 1
|
存储 机器学习/深度学习 自然语言处理
LangChain与向量数据库:高效的信息检索方案
【8月更文第4天】随着自然语言处理技术的发展,特别是深度学习的进步,我们能够更加高效地处理大量的文本数据。LangChain 作为一种强大的工具链,旨在简化和加速构建复杂的自然语言处理应用程序。结合向量数据库,LangChain 可以实现高效且精准的信息检索功能。本文将探讨这一组合的工作原理,并通过一个具体的实现案例来展示其在实际应用中的效果。
1529 2
|
canal 负载均衡 智能网卡
阿里云洛神云网络论文入选SIGCOMM'25主会,相关实习生岗位火热招聘中
阿里云飞天洛神云网络的两项核心技术Nezha和Hermes被SIGCOMM 2025主会录用。Nezha通过计算网络解耦实现vSwitch池化架构,大幅提升网络性能;Hermes则提出用户态引导I/O事件通知框架,优化L7负载均衡。这两项技术突破解决了云网络中的关键问题,展现了阿里云在网络领域的领先实力。
2294 2
AvaloniaUI 取消标题栏,无边框无最大最小化,
AvaloniaUI 取消标题栏,无边框无最大最小化,
1959 1
AvaloniaUI 取消标题栏,无边框无最大最小化,
|
Linux C# Android开发
分享3款开源、免费的Avalonia UI控件库
分享3款开源、免费的Avalonia UI控件库
2224 0
|
数据处理 开发者 C#
WPF数据绑定实战:从零开始,带你玩转数据与界面同步,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用开发中,数据绑定是核心技能之一,它能实现界面元素与数据源的同步更新。本文详细介绍了WPF数据绑定的概念与实现方法,包括属性绑定、元素绑定及路径绑定等技术,并通过示例代码展示了如何创建数据绑定。通过数据绑定,开发者不仅能简化代码、提高可维护性,还能提升用户体验。无论初学者还是有经验的开发者,都能从中受益,更好地掌握WPF数据绑定技巧。
510 0
|
SQL 开发框架 .NET
深入解析Entity Framework Core中的自定义SQL查询与Raw SQL技巧:从基础到高级应用的全面指南,附带示例代码与最佳实践建议
【8月更文挑战第31天】本文详细介绍了如何在 Entity Framework Core (EF Core) 中使用自定义 SQL 查询与 Raw SQL。首先,通过创建基于 EF Core 的项目并配置数据库上下文,定义领域模型。然后,使用 `FromSqlRaw` 和 `FromSqlInterpolated` 方法执行自定义 SQL 查询。此外,还展示了如何使用 Raw SQL 进行数据更新和删除操作。最后,通过结合 LINQ 和 Raw SQL 构建动态 SQL 语句,处理复杂查询场景。本文提供了具体代码示例,帮助读者理解和应用这些技术,提升数据访问层的效率和灵活性。
1058 0
|
测试技术 数据安全/隐私保护 Windows