Winform 切换或重置托盘图标

前几天写的winform程序,需要在程序运行时,切换或者重新设置托盘图标。

我用的是windows7下的256×256px的两个icon。想到如下方法:

1.直接访问图标资源

添加一个托盘图标,命名为notifyIcon,并为它的icon属性选择一个图标。

如图所示,向工程中添加两个icon资源,分别命名为:Connected和Disconnected。

Winform 切换或重置托盘图标

在代码中引入资源文件的命名空间:

using System.Resources;

然后,就可以直接以访问icon资源的方式,重新设置托盘图标:

this.notifyIcon.Icon = Properties.Resources.Connected;

或者

this.notifyIcon.Icon = Properties.Resources.Disconnected;

2.使用ImageList存取Icon

ImageList控件可以存储的图片文件包括:bmp, gif, jpg, jpeg, png, ico。

添加一个ImageList控件,命名为imageList。

右键其属性,ColorDepth选择Depth32Bit,Images集合添加两个上述的icon文件。

然后,根据索引index,从imageList中取icon,设为托盘图标。

Image img = this.imageList.Images[1];//索引0指向第一个icon,1指向第2个icon
Bitmap b = new Bitmap(img);
Icon icon = Icon.FromHandle(b.GetHicon());
this.notifyIcon.Icon = icon;

两种方法对比

1.图标质量:由于我使用的是256×256的大图标,第一种方法直接访问资源,图标显示正常。第二种方法,要经过image-icon转化,显示图标时略有失真。(如有解决方法,不吝赐教)

2.效率:第二种方法应该效率更高,适合做托盘图标闪烁等效果。

你可能感兴趣的:(WinForm)