如何在c#中添加文本到图标?

我想在系统托盘中显示一个图标[.ico文件],并在运行时添加一些文本。 是否有任何原生WPF方式可以做到这一点? 或GDI +的片段也将不胜感激。

谢谢。

这是适合我的代码,

public static Icon GetIcon(string text) { //Create bitmap, kind of canvas Bitmap bitmap = new Bitmap(32, 32); Icon icon = new Icon(@"Images\PomoDomo.ico"); System.Drawing.Font drawFont = new System.Drawing.Font("Calibri", 16, FontStyle.Bold); System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White); System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap); graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel; graphics.DrawIcon(icon, 0, 0); graphics.DrawString(text, drawFont, drawBrush, 1, 2); //To Save icon to disk bitmap.Save("icon.ico", System.Drawing.Imaging.ImageFormat.Icon); Icon createdIcon = Icon.FromHandle(bitmap.GetHicon()); drawFont.Dispose(); drawBrush.Dispose(); graphics.Dispose(); bitmap.Dispose(); return createdIcon; } 

由于系统托盘图标没有附带文本,因此您可以将文本覆盖在图标本身上,也可以使用工具提示样式的弹出窗口。

覆盖文本(可能通过将其嵌入程序生成的图标中)将非常繁琐,但更重要的是可能是一个坏主意,因为图标最适合用于显示分类状态信息,弹出文本或弹出文本中提供更详细的信息或一个弹出窗口。

例如,如果图标表示收件箱状态,则足以显示“新邮件”与“无新邮件”,而无需显示新邮件的数量。 这允许显示更清晰的图标,其不需要由用户详细解密。

灰色区域是指示过程状态的图标。 你可以只是“进行中”而不是“完整”图标,但我已经看到嵌入了进度条的图标,我认为这是一种巧妙的方式。 很明显,微小图标中的进度条并没有真正显示精确的数值数据,并且可以更接近于根据分辨率表达分类数据(根本没有完成,部分完成,完成)。

如果您决定采用这种方法,那么此链接应该有所帮助:

  • 代码项目文章显示如何使用WPF更改图标,显示弹出文本和弹出窗口。

如果您仍然认为您的用例值得在图标上叠加文本,那么我认为在程序上生成图标将是实现它的方法。 我想你首先需要将文本添加到图像中,然后将其转换为图标。 这些链接可以帮助您:

  • 打开Code C#片段,将文本添加到图像中
  • Code Prject有关动态创建.ico文件的文章 – 非常全面,可能对您的需求有点过分,但您可以提取代码供您使用。