Лучший размер значка для отображения в лотке

Я работаю над программой Delphi, которая отобразит значок на "лотке". Я делаю это "трудным путем" (используя Shell_NotifyIcon api и т.д., А не компонент, по причинам, не входящим в эту точку). Он отлично работает, но иногда кажется, что в некоторых системах значок немного "размыт". Теперь я экспериментировал с использованием 16x16 бит, 32x32 и т.д. Кажется, что система масштабирует его до нужного размера, но результаты различаются в зависимости от версии ОС (или, возможно, что-то еще)....

Есть ли у вас какой-либо опыт по наилучшему размеру и глубине цвета BMP, который нужно извлечь и отобразить на лотке с помощью Shell_NotifyIcon из ListImage?

Ответ 1

Вы должны использовать 32bpp-иконки с частичной прозрачностью для лучшего эффекта.

Значок использует небольшой размер системы. Получите это, позвонив GetSystemMetrics, переходя SM_CXSMICON. Если вы используете масштабирование шрифта, это может быть, например, 20px, а не более общий 16px. Я никогда не нашел документацию по MS для этого факта, но вы можете легко убедиться в этом самим путем проб и ошибок. Не очень счастливое положение дел, но это то, что есть.

Обновление: Тондрей указывает, что документы для LoadIconMetric дают молчаливое одобрение значка области уведомлений, являющегося небольшим размером значка. Я не понимаю, почему эта информация не включена в это для значков уведомлений.

Ответ 2

Вероятно, вы должны включить и значки 32x32 и 16x16, и загрузить их во время выполнения:

Значки области уведомлений должны быть осведомлены о высоком уровне DPI. Приложение должен содержать значок 16x16 пикселей и значок 32x32 в его файл ресурсов, а затем используйте LoadIconMetric, чтобы убедиться в правильности значок загружается и масштабируется соответствующим образом.

(источник: MSDN)

Ответ 3

Для значков приложений рекомендуется использовать один *.ico файл. *.ico файл может хранить различные размеры значков, таких как 16, 32, 256 и т.д. Здесь вы можете конвертировать различные файлы изображений в формат ico в формате здесь.

Для значка в лотке 16x16 или 32x32 ico будет соответствовать.

Официальное руководство msdn для значков: значки в Windows