我想在系统托盘中显示2-3个可更新的字符,而不是显示一个.ico文件 - 就像CoreTemp在系统托盘中显示温度一样。
我正在使用一个NotifyIcon在我的WinForms应用程序中,同时使用以下代码:
Font fontToUse = new Font("Microsoft Sans Serif", 8, FontStyle.Regular, GraphicsUnit.Pixel);
Brush brushToUse = new SolidBrush(Color.White);
Bitmap bitmapText = new Bitmap(16, 16);
Graphics g = Drawing.Graphics.FromImage(bitmapText);
IntPtr hIcon;
public void CreateTextIcon(string str)
{
g.Clear(Color.Transparent);
g.DrawString(str, fontToUse, brushToUse, -2, 5);
hIcon = (bitmapText.GetHicon);
NotifyIcon1.Icon = Drawing.Icon.FromHandle(hIcon);
DestroyIcon(hIcon.ToInt32);
}
不幸的是,这会产生一个糟糕的结果,与CoreTemp得到的结果完全不同:
你可能认为解决方法是增加字体大小,但超过8号字体的任何内容都无法放入图像中。将位图从16x16增加到32x32也没有效果-它会被缩小。此外,我想显示“8.55”而不仅仅是“55”,虽然图标周围有足够的空间,但似乎无法使用。有更好的方法吗?为什么Windows可以做到以下操作,而我却不能?
更新:
感谢 @NineBerry 提供的好的解决方案。另外,我发现 Tahoma
是最适合使用的字体。