我试图在系统托盘中显示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”的问题 - 图标周围有足够的空间,但看起来不可用。
有没有更好的方式来做到这一点?为什么窗户可以做到以下,但我不能?
更新:
感谢@NineBerry一个很好的解决方案。要添加,我发现Tahoma
是最好的字体使用。
我希望其他应用程序只使用了一组内置的图标,而不是试图产生他们即时 –