首页 > 编程语言 >C#托盘图标动画效果 - 开源研究系列文章

C#托盘图标动画效果 - 开源研究系列文章

时间:2024-04-30 09:44:05浏览次数:16  
标签:动画 C# interval 托盘 开源 计时器 CPU 图标

       这次在编写一个CPU使用率的小应用,上次发布了获取CPU使用率的代码,这次研究的是托盘图标的动画效果的问题。

       托盘图标的动画效果,其实是多个图标,然后在时间内进行切换显示,形成的动画效果。这里笔者推荐两种方法:

  1、 Timer计时器方法;

  就是设置一个Timer计时器,然后更改计时器的定时时间,进行切换不同的图标。

/// <summary>
/// 图标动画显示计时器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TimerAnimation_Tick(object sender, EventArgs e)
{
    if (icons.Length <= current) current = 0;
    this.NICPURater.Icon = icons[current];
    current = (current + 1) % icons.Length;
}

/// <summary>
/// CPU使用率获取显示计时器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TimerCPUUseage_Tick(object sender, EventArgs e)
{
    interval = Math.Min(100, cpuUsage.NextValue()); // Sometimes got over 100% so it should be limited to 100%
    this.NICPURater.Text = $"CPU: {interval:f1}%";
    interval = 200.0f / (float)Math.Max(1.0f, Math.Min(20.0f, interval / 5.0f));

    this.TimerAnimation.Stop();
    this.TimerAnimation.Interval = (int)interval;
    this.TimerAnimation.Start();
}

  2、 无限循环法;

  设置一个无限循环,控制Thread,Sleep的时间进行切换。

private void Anmination()
{
    while (!_IsDone)
    {
        if (icons.Length <= current) current = 0;
        this.NICPURater.Icon = icons[current];
        current = (current + 1) % icons.Length;

        Thread.Sleep((int)interval);
    }
}

       这里介绍了两种托盘图标动画切换的方式,具体请读者自己去实践应用。

标签:动画,C#,interval,托盘,开源,计时器,CPU,图标
From: https://www.cnblogs.com/lzhdim/p/18167168

相关文章

  • Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)
    SpringWebFlow远程代码执行漏洞(CVE-2017-4971)SpringWebFlow是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其2.4.x版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。......
  • AcWing 95. 费解的开关
    原题链接你玩过“拉灯”游戏吗?25盏灯排成一个5×5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字1表示一盏开着的灯,用数......
  • npm下载包时报错 Unexpected token '.'问题解决
    1.出现问题当通过nvm切换nodejs版本为16以上时,npminstall[package]报错:Unexpectedtoken'.'2.问题原因该问题不是npm的问题,也不是nodejs的问题,是nvm-windows的问题。3.解决问题nvm-windows已经更新版本解决了这个问题我是通过更新nvm-windows到版本1.19解决了这个问题......
  • 浅析OpenCV分水岭变换watershed函数的markers参数[C++]
    0.前言本文是笔者在学习C++OpenCV库时学习心得,在学习分水岭变换函数时,由于缺少相关学习资料,导致笔者理解吃力,故写此文章阐述一下对该函数的理解,希望对其他学习人士提供帮助。本文主要介绍了watershed函数参数以及参数实际表示。请您按文章次序阅读。您需要提前了解的相关知......
  • 【C语言】---- for循环函数
    在C语言中,for循环是一种常用的循环结构,用于重复执行一段代码多次。for循环提供了一种简洁而灵活的方式来实现循环,使程序员能够更有效地编写和管理代码。for循环的语法for循环的基本语法如下:for(初始化表达式;循环条件;更新表达式){//循环体}其中:初始化表达......
  • 模拟集成电路设计系列博客——6.1.3 多电阻串DAC
    在这一小节中,会介绍另一种电阻串DAC的变体,如下图所示[Holloway,1984]:第二个电阻串被连接在连接第一个电阻串的两个相邻节点的缓冲器之间。在如图所示的6-bit例子中,三比特MSB决定了哪两个第一个电阻串的相邻节点被连接到两个中介的缓冲器。第二个电阻串线性采样第一个电阻上的两......
  • RPC协议有哪些
    序章什么是RPC?答:RPC(RemoteProcedureCall)远程过程调用协议。RPC协议的用途是什么?答:服务间方便地调用,主要后端服务之间。看到一段话,【对外使用RESTfulAPI,对内使用RPC】使用RPC协议的好处?答:相对于RESTfulAPI,(数据传输)效率更高(有多高?自己没调查过)。gRPC是什么?答:Googl......
  • 【C】---- T6:嵌套循环输出字母
    题目使用嵌套循环,按下面的格式打印字母:FFEFEDFEDCFEDCBFEDCBA编程#include<stdio.h>intmain(void){//以ASCII值定义字母:A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Zconstintarr[26]={65,66,67,68,69,70,71,72,73......
  • centos 7 下完全卸载 mysql 5.6
    centos下完全卸载mysql5.6 1查看已经安装的服务rpm-qa|grep-imysql-i作用是不区分大小写mysql-community-common-5.6.51-2.el7.x86_64mysql-community-libs-5.6.51-2.el7.x86_64mysql-community-server-5.6.51-2.el7.x86_64mysql-community-release-el7-5.noarchmy......
  • Qt Creator + MSVC2017编译器配置指南
    QtCreator+MSVC2017编译器配置指南下载和安装MSVC2017编译器下载下载MSVC编译器安装工具:https://docs.microsoft.com/zh-tw/previous-versions/visualstudio/visual-studio-2017/install/use-command-line-parameters-to-install-visual-studio?view=vs-2017安装安......