动态绘制任务栏图标C#的实现

Posted dotnet lover

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态绘制任务栏图标C#的实现相关的知识,希望对你有一定的参考价值。

通常我们在做一个应用时会遇到这样的需求:将收到的消息条数显示到任务栏,比如如下的效果

 

怎么实现呢?

 

答案是采用WindowsAPICodePack实现,具体参见:Windows 7 任务栏开发 之 覆盖图标(Overlay Icon)

 

当然你也可以采用我下面的笨方法,缺点是就是不够底层!!

代码如下:

 /// <summary>
/// 动态设置任务栏图标
/// </summary>
/// <param name="number"></param>
public void SetTaskIconDynamic(string number) { //动态绘制图标样式 Size size = this.Icon.Size; Bitmap cursorBitmap = new Bitmap(size.Width, size.Height); Graphics graphics = Graphics.FromImage(cursorBitmap); graphics.Clear(Color.FromArgb(0, 0, 0, 0)); graphics.ResetClip(); Rectangle rect = new Rectangle(0, 0, size.Width, size.Height);

//Gdi+自定义绘制图标 graphics.DrawImage(
this.Icon.ToBitmap(), rect); graphics.FillEllipse(new SolidBrush(Color.FromArgb(244,107,10)), new Rectangle(rect.Width / 2 - 2, rect.Height / 2 - 2, rect.Width / 2, rect.Height / 2)); graphics.DrawString(number, this.Font, Brushes.White, new Rectangle(rect.Width / 2 - 2, rect.Height / 2 - 2, rect.Width / 2, rect.Height / 2), new StringFormat() { LineAlignment = StringAlignment.Center, Alignment = StringAlignment.Center }); //生成Icon Icon cursor = Icon.FromHandle(cursorBitmap.GetHicon()); graphics.Dispose(); cursorBitmap.Dispose(); //更新任务栏图标样式 this.Icon = cursor; }

拿走,不谢!

 

以上是关于动态绘制任务栏图标C#的实现的主要内容,如果未能解决你的问题,请参考以下文章

如何使用主题api绘制任务栏按钮,如图标

是否可以动态编译和执行 C# 代码片段?

如何在 Windows 7 上删除 Java 程序的标题栏和任务栏图标?

C#编写最小化时隐藏为任务栏图标的 Window appllication.

C# 实现Winform全屏后不遮挡任务栏,显示任务栏

全网首发:C#中Form设置$this.Icon,任务栏图标错误的解决办法(bitmap转icon)