У меня есть Приложение Windows, которое будет работать в Windows XP и более новый (т.е. Vista/7). Согласно Инструкциям UI Vista, стандартные размеры 16x16, 32x32, 48x48, 256x256 (размеры стандарта XP не включают 256x256 значок). В дополнение к тем размерам я также имею 96x96 и 128x128 (и мог создать больше).
Какой из этих размеров значков я должен включать? Оболочка будет на самом деле использовать "нестандартные" размеры, или я просто чрезмерно увеличу размер своего приложения?
Мне потребовалось время, чтобы проверить это в деталях. Я создал значок, изображения которого имеют размеры 16, 24, 32, 40, 48, 64, 96, 128 и 256. Затем я проверил, какое изображение показано. Все это было сделано с нормальным разрешением 96 точек на дюйм. Если используется больший DPI, можно использовать и большие размеры (только немного отметьте это в Windows 7). Результаты:
Windows XP:
Windows 7:
Среда выполнения Windows: ( отсюда )
Итак, результат: Windows XP использует значки размером 16, 32, 48, тогда как Windows 7 (и, предположительно, также Vista) также использует значки размером 256. Все остальные промежуточные размеры значков игнорируются (они могут использоваться в некоторых областях, которые я не проверял).
Я также проверил в Windows 7, что происходит, если размеры значков отсутствуют:
Отсутствующие размеры генерируются (очевидно). При размерах 16, 32 и 48, если один из них отсутствует, предпочтительнее уменьшение размера. Итак, если у нас есть значки размером 16 и 48, значок 32 создается из значка 48. Значок 256 используется для них, только если другие размеры недоступны! Значит, если значки имеют размер 16 и 256, другие размеры увеличиваются по сравнению со значком 16!
Кроме того, если значок 256 отсутствует, используется (возможно, сгенерированный) значок 48, но его размер больше не изменяется. Итак, у нас есть (возможно, большая) пустая область со значком 48 посередине.
Обратите внимание, что размер значка на рабочем столе по умолчанию в XP был 32x32, а в Windows 7 - 48x48. Как следствие, для Windows 7 относительно важно иметь значок 48. В противном случае масштабирование будет увеличено по сравнению с меньшим значком, что может выглядеть довольно некрасиво.
Замечание о совместимости с Windows XP: если вы повторно используете значок в качестве значка окна, обратите внимание, что это может привести к сбою вашего приложения, если вы используете сжатый значок 256. Решение состоит в том, чтобы либо не сжимать значок, либо создать вторую версию без (сжатого) значка 256. См. здесь для получения дополнительной информации.
Не 96x96, используйте 64x64. Я обычно использую:
256 работает также хорошо на XP, однако, старые компиляторы ресурсов иногда жаловались на ошибки "out of memory".