zoukankan      html  css  js  c++  java
  • 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; }

    拿走,不谢!

  • 相关阅读:
    hdu 1296
    hdu 2101
    hdu 2100
    codeforces 3C
    codeforces 2A
    codeforces 1B
    codeforces 811B
    关于sws_scale() 段错误
    cf 1288 D. Minimax Problem (好题)(二分+二进制表状态+枚举)
    opencv4 鼠标事件 鼠标画线条
  • 原文地址:https://www.cnblogs.com/shaozhuyong/p/5523827.html
Copyright © 2011-2022 走看看