Какой формат и размер значков использовать для NotifyIcon - PullRequest
7 голосов
/ 05 сентября 2011

Я не смог найти информацию о значках в системном трее, в каком размере они должны быть, чтобы получить максимально возможное качество. Должен ли я использовать более одного размера (16x16,32x32,64x64)?

В настоящее время я использую значки 16x16 .ICO, и они выглядят искаженными.

Ответы [ 2 ]

8 голосов
/ 05 сентября 2011

Это маленькие иконки (ICON_SMALL).Вы можете узнать размер, позвонив по номеру:

GetSystemMetrics(SM_CXSMICON)

Я думаю, вполне безопасно предположить, что они квадратные, но если вы параноик, вы всегда можете узнать о SM_CYSMICON.

На моей машине с Windows 7 они имеют размер 16px.Но если вы используете масштабирование шрифтов, то они будут больше.Для масштабирования шрифта 125% (например, крупных шрифтов) вам понадобится значок в 20px.

Если у вас нет версии под 20px, тогда лучше всего создать ее на лету и поставить 16pxверсия в середине нового значка 20px.

Обновление

В документации NOTIFYICONDATA рекомендуется использовать LoadIconMetric, передавая LIM_SMALLчто эквивалентно подходу, который я описал выше.

Тем не менее, в теме NOTIFYICONDATA также говорится об использовании ресурса значков, содержащего версии значков just16px и 32px.Этот совет обманчив, потому что, как каждый может убедиться сам, значки уведомлений под большими шрифтами - это значки размером 20 пикселей, а LoadIconMetric будет иметь масштаб от 32 до 20. Я бы рекомендовал использовать версии 16, 20, 24, 32 пикселей.

В XP LoadIconMetric не существует, поэтому вам нужно будет выполнить процедуру восстановления.

0 голосов
/ 05 сентября 2011

Я считаю, что лучше всего создать свою иконку разных размеров и позволить Windows выбрать лучшую. Вы никогда не знаете, насколько велик системный трей, потому что разные пользователи могут иметь разные настройки.

Это также может быть причиной того, что ваша кажется искаженной. Допустим, вы используете 16x16, но вы настроили Windows для отображения их 18x18. Если вы не предоставили значок 18x18, он будет искажен.

См. этот вопрос и ответ Ларри Остермана.

...