Проблема с непосредственным использованием значка в ваших ресурсах состоит в том, что вместо выбора правильной версии значка в вашем файле значков платформа просто масштабирует версию значка по умолчанию до любого размера, необходимого области уведомлений.Вот почему вы видите зазубренные края.
Чтобы получить наилучшее качество, вам нужно самостоятельно выбрать правильный размер значка.
Во-первых, вместо непосредственной установки NotifyIcon.Icon
к значку в ваших ресурсах, создайте новый Icon
экземпляр.Это позволит вам выбрать конкретный размер значков в вашем ресурсе значков.Использование SystemInformation.SmallIconSize
даст вам размер, необходимый области уведомлений.
Итак:
myNotifyIcon.Icon = new Icon(Properties.Resources.MyIcon, SystemInformation.SmallIconSize);
Теперь SystemInformation.SmallIconSize
всегда возвращает правильный размер значка, но только если ваше приложение имеет DPI-осознание (в противном случае, он всегда возвращает 16).Если ваше приложение не поддерживает DPI и используется в системе, в которой включено масштабирование DPI, в строке выше будет выбран значок 16x16 в вашем ресурсе, при этом он будет масштабирован до любого размера, необходимого области уведомлений.(другими словами, некрасивый значок).
Если приложение поддерживает DPI, SystemInformation.SmallIconSize
вернет правильный размер с учетом масштабирования DPI.Например, если DPI-масштабирование составляет 150%, SystemInformation.SmallIconSize
вернет 24 (16 × 1,5).
Чтобы сделать приложение осведомленным о DPI, просто добавьте его в app.manifest внутри <asmv1:assembly>
тег:
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>