Dot-Net
Windows 從多圖示文件中選擇錯誤的圖示並自行渲染為正確的大小
我有一個 .ico 文件,其中嵌入了 5 個圖示大小,用作主應用程序圖示和系統托盤圖示。
當它出現在工作列中時,該圖示使用的是所需的 16x16 格式。當圖示出現在通知區域/系統托盤中時,它使用的是 32x32 格式,而 Windows 將其渲染為 16x16 圖示,這看起來很糟糕。
如何強制 Windows 在通知區域中使用 16x16 圖示大小?這是我將圖示放入系統托盤的程式碼:
ContextMenu cmNotify = new ContextMenu(); MenuItem miNotify = new MenuItem(Properties.Resources.Notify_Text); miNotify.DefaultItem = true; miNotify.Click += new EventHandler(notifyHandler); cmNotify.MenuItems.Add(miNotify); notifyIcon = new NotifyIcon(); notifyIcon.Icon = this.Icon; notifyIcon.Visible = true; notifyIcon.ContextMenu = cmNotify; notifyIcon.Text = AppConstants.APPLICATION_NAME;
兩種反應都很接近,但含有一種微妙的毒藥。您不應將請求的大小硬編碼為 16x16。
相反,查詢 SystemInformation.SmallIconSize 以確定適當的維度。雖然預設值肯定是 16x16,但這可以通過各種方式進行更改,例如 DPI 縮放。
有關此屬性的詳細資訊,請參閱MSDN 文章。
一個使用範例是
notifyIcon.Icon = new System.Drawing.Icon(this.Icon, SystemInformation.SmallIconSize),
改變這個:
notifyIcon.Icon = this.Icon;對此:
notifyIcon.Icon = new System.Drawing.Icon(this.Icon, 16, 16);