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

怎么实现呢?

答案是采用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;
}

拿走,不谢!

C# 动态绘制任务栏图标的实现的更多相关文章

  1. iOS可视化动态绘制连通图

    上篇博客<iOS可视化动态绘制八种排序过程>可视化了一下一些排序的过程,本篇博客就来聊聊图的东西.在之前的博客中详细的讲过图的相关内容,比如<图的物理存储结构与深搜.广搜>.当 ...

  2. Win7任务栏图标大小调整为等宽

    打开注册表,找到HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics,新建DWORD,输入MinWidth,大图标设为56,小图标设定为36: 参 ...

  3. Win10如何隐藏Windows Defender任务栏图标

    导读 Windows 10 至发布以来就内置集成了 Windows Defender 安全防护应用,但有许多用户平常压根儿就没注意到它的存在.微软为了使安全防护功能更加明显,Windows 10 周年 ...

  4. C#:实现托盘(任务栏图标与托盘图标互斥)

    实现托盘(任务栏图标与托盘图标互斥),并且在点击任务栏图标时实现的最小化与点击最小化按钮分离. 具体如下: 1.向窗体上添加如下控件:MenuStrip menuStrip1, NotifyIcon ...

  5. c#无标题窗体点击任务栏图标正常最小化或还原

    FormBorderStyle等于System.Windows.Forms.FormBorderStyle.None的窗体,点击任务栏图标的时候,是不能象标准窗体那样最小化或还原的. protecte ...

  6. FireMonkey隐藏任务栏图标

    FMX(FireMonkey)可以轻松实现很多VCL无法或难以实现的特效,所以将FMX程序作为界面,打包入DLL由VCL程序调用,是一个不错的方案.为了程序的完整性,你不想看见FMX程序在任务栏上显示 ...

  7. iOS可视化动态绘制连通图(Swift版)

    上篇博客<iOS可视化动态绘制八种排序过程>可视化了一下一些排序的过程,本篇博客就来聊聊图的东西.在之前的博客中详细的讲过图的相关内容,比如<图的物理存储结构与深搜.广搜>.当 ...

  8. C++隐藏任务栏图标

    在VC编程中,有时候我们需要将我们的程序在任务栏上的显示隐藏起来,我试过几种方法,下面我介绍一下我知道的三种方法. 第一种方法是设置窗口WS_EX_TOOLWINDOW扩展样式,通过在OnInitDi ...

  9. c# 动态绘制直线和曲线

    c# 动态绘制直线和曲线   在本案例中利用Graphics对象动态地绘制直线和曲线.程序运行后,选择“直线”单选按钮,然后按下鼠标左键拖动鼠标就可以绘制直线,选择“曲线”单选按钮,然后移动鼠标就可以 ...

随机推荐

  1. wince6下载地址

    http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/08/31/installing-windows-ce-6.0-tools ...

  2. VFL示例

    •[cancelButton(72)]-12-[acceptButton(50)] •取消按钮宽72point,accept按钮宽50point,它们之间间距12point • •[wideView( ...

  3. Oracle 11g对大表中添加DEFAULT值的NOT NULL字段速度有大幅度的提升

    在一张2000万的表上增加了一个字段并字段一个默认值,执行这条语句(alter table tablename add new_col default ‘col’)一个小时没有执行完,问我有没有其他解 ...

  4. java-swing在组件中显示信息

    package com.http; import java.awt.*; import javax.swing.*; public class TestSwing2 { //创建了一个能够绘制的组件 ...

  5. MongoDB的启动

    在桌面或者其它地方建立mongodb.bat 批处理文件 在里面写入如下内容 mongod --dbpath D:\java_tools\MongoDB\MongoDBDATA 保存-然后打开该文件 ...

  6. Symfony2学习笔记之数据库操作

    数据库和Doctrine让我们来面对这个对于任何应用程序来说最为普遍最具挑战性的任务,从数据库中读取和持久化数据信息.幸运的是,Symfony和Doctrine进行了集成,Doctrine类库全部目标 ...

  7. javascript中createTextRange用法(focus)

    createtextrange createrange区别: 对象或元素不同,虽然都是返回TextRange.例如:     var r=document.body.createTextRange() ...

  8. 输出流 写文件 文本 换行nextLine

      FileOutputStream   fos   =   new   FileOutputStream( "c:\\test.txt ");  String   nextLin ...

  9. JAVA遍历一个文件夹中的所有文件

    在实际项目中给定一文件夹,得到这个文件夹下所有的文件这样的需求并不是很多,更多的是查找或是删除某一具体的文件 import java.io.File; import java.util.ArrayLi ...

  10. 说说shell脚本中的export 和 source,bash

    小弟刚刚接触linux,对linux上的很多东西都比较陌生,所以写一写博客,当做自己工作的总结和技术的积累吧,也是鞭策自己不断努力的去学习. 今天之所以起这个标题,把export,source ,ba ...