Sto tentando di visualizzare 2-3 caratteri aggiornabili nella barra delle applicazioni anziché visualizzare un file .ico, simile a ciò che fa CoreTemp quando visualizzano la temperatura nel sistema, prova:Scrittura di testo sulla barra delle applicazioni invece di un'icona
sto usando un NotifyIcon nella mia applicazione WinForms insieme con il seguente codice:
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);
}
Purtroppo questo produce un povero nulla di risultato come quello che CoreTemp ottiene:
0.123.516,41 milaSi potrebbe pensare che la soluzione sarebbe quella di aumentare la dimensione del carattere, ma qualcosa di più di dimensioni 8 non si adatta all'interno dell'immagine. Aumentare la bitmap da 16x16 a 32x32 non fa nulla - viene ridimensionato.
Poi c'è il problema di me che voglio visualizzare "8.55" anziché solo "55" - c'è abbastanza spazio attorno all'icona ma sembra inutilizzabile.
Esiste un modo migliore per fare questo? Perché Windows può fare quanto segue ma non posso?
Aggiornamento:
Grazie per @NineBerry per una buona soluzione. Per aggiungere, trovo che Tahoma
sia il miglior font da usare.
Mi aspetterei che altre applicazioni basta usare un set di icone in-built, piuttosto che cercare di generarle on-the-fly –