Я пытаюсь отобразить на панели задач 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» - достаточно места вокруг значка, но оно кажется непригодным.
Есть ли лучший способ сделать это? Почему окна могут делать следующее, но я не могу?
Update:
Спасибо за @NineBerry для хорошего решения. Чтобы добавить, я считаю Tahoma
лучшим шрифтом для использования.
Я хотел бы ожидать, что другие приложения просто использовать набор в построенных иконок, а не пытаться создавать их на лету –