通常我们在做一个应用时会遇到这样的需求:将收到的消息条数显示到任务栏,比如如下的效果
怎么实现呢?
答案是采用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(, , , ));
graphics.ResetClip();
Rectangle rect = new Rectangle(, , size.Width, size.Height); //Gdi+自定义绘制图标
graphics.DrawImage(this.Icon.ToBitmap(), rect);
graphics.FillEllipse(new SolidBrush(Color.FromArgb(,,)), new Rectangle(rect.Width / - , rect.Height / - , rect.Width / , rect.Height / ));
graphics.DrawString(number, this.Font, Brushes.White, new Rectangle(rect.Width / - , rect.Height / - , rect.Width / , rect.Height / ), new StringFormat()
{
LineAlignment = StringAlignment.Center,
Alignment = StringAlignment.Center
}); //生成Icon
Icon cursor = Icon.FromHandle(cursorBitmap.GetHicon());
graphics.Dispose();
cursorBitmap.Dispose(); //更新任务栏图标样式
this.Icon = cursor;
}
拿走,不谢!