Здравствуйте. Делаю большую (больше 32х32) иконку для своего приложения. Добавляю в ресурсы приложения, все работает. Но иконка отображается маленькая, даже когда включены огромные значки.
То есть если взять сам ico-файл, то на огромных значках иконка будет во весь размер, а у exe-шника с этой же иконкой в ресурсах, будет обычная маленькая иконка в большом белом квадрате. Что я делаю неверно?
Здравствуйте, Went, Вы писали:
W>Здравствуйте. Делаю большую (больше 32х32) иконку для своего приложения. Добавляю в ресурсы приложения, все работает. Но иконка отображается маленькая, даже когда включены огромные значки. W>То есть если взять сам ico-файл, то на огромных значках иконка будет во весь размер, а у exe-шника с этой же иконкой в ресурсах, будет обычная маленькая иконка в большом белом квадрате. Что я делаю неверно?
Для того, чтобы иконка нормально отображалась в проводнике, на рабочем столе и в панели задач, требуется наличие стандартного набора размеров изображений:
16x16, 20x20, 24x24, 32x32, 40x40, 48x48, 64x64 и т.д. для больших DPI экрана.
Если ico-файл каких-то стандартных размеров не содержит или, тем более, содержит одно большое изображение нестандартного размера, то в некоторых режимах происходит растяжение/сжатие или отображения в виде миниатюры (в белом квадрате).
Для тестов хорошо сделать иконку с разными надписями на каждом изображении: "16", "20", "24", "32", ...
Это сразу позволяет понять, где какой размер выбирается Windows для отображения.
Где-то у меня была такая иконка, но сходу не нашел.
В редакторе ресурсов делается за 5 минут.
P.S. Есть удобный редактор иконок IconFx, после него студийным не хочется пользоваться.
Здравствуйте, qaz77.
Понимаете, сам ico-файл (main.ico, назовем) отображается корректно на больших иконках. А вот у экзешника, которому эту иконку назначили (main.exe) на больших иконках рисуется маленькая, 32х32 в большом белом квадрате. Иконку делаю так — рисую большую (128х128) png, загружаю ее в AWIconsPro и делаю "создать стандартные размеры из имеющихся" и получаю ico с кучей размеров и глубин цвета.
Здравствуйте, Went, Вы писали:
W>Понимаете, сам ico-файл (main.ico, назовем) отображается корректно на больших иконках. А вот у экзешника, которому эту иконку назначили (main.exe) на больших иконках рисуется маленькая, 32х32 в большом белом квадрате. Иконку делаю так — рисую большую (128х128) png, загружаю ее в AWIconsPro и делаю "создать стандартные размеры из имеющихся" и получаю ico с кучей размеров и глубин цвета.
У меня в памяти отложилось, что, вроде бы, порядок этих изображений внутри ICO-файла играет роль. К сожалению, не помню подробностей, но стоит погуглить на эту тему. А для начала поэкспериментировать, расположив их по возрастанию и по убыванию размеров — проверить, поменяется ли поведение.
Здравствуйте, Went, Вы писали:
W>Понимаете, сам ico-файл (main.ico, назовем) отображается корректно на больших иконках. А вот у экзешника, которому эту иконку назначили (main.exe) на больших иконках рисуется маленькая, 32х32 в большом белом квадрате. Иконку делаю так — рисую большую (128х128) png, загружаю ее в AWIconsPro и делаю "создать стандартные размеры из имеющихся" и получаю ico с кучей размеров и глубин цвета.
А id в ресурсах приложения у иконки какой?
У меня везде 101 используется и отображается нормально.
В официальной доке MS не знаю, где это описано, но так создает resource.h студийный визард.
Дополнение. Похоже, что 101 не какое-то специальное значение, а просто минимальный ID ресурса в проектах студии.
Для иконки приложения важно иметь минимальный ID ресурса среди других иконок.
При этом не рекомендуется использовать ID=1, т.к. при указании иконки в виде "файл,-ID", значение -1 имеет специальное значение.
Здравствуйте, CaptainFlint, Вы писали: CF>У меня в памяти отложилось, что, вроде бы, порядок этих изображений внутри ICO-файла играет роль. К сожалению, не помню подробностей, но стоит погуглить на эту тему. А для начала поэкспериментировать, расположив их по возрастанию и по убыванию размеров — проверить, поменяется ли поведение.
Студия как-то не дает менять имеющийся порядок... Но, в любом случае, я вообще убил все иконки кроме больших размеров — иконка все равно рисуется маленькая в большом белом квадрате. Рядом лежит DLL — у нее громадная иконка на весь квадрат.
Здравствуйте, Went, Вы писали: W>101 Собственно, это единственный ресурс во всем приложении
Еще вспомнил, такой эффект бывает при разработке.
Запускаем exe со старой/маленькой иконкой и Windows ее кэширует (в разрезе имени exe?).
Потом заменяем иконку на большую и красивую, при запуске exe продолжает отображаться старая.
Надо в AppData снести файл IconCache.db и перезагрузиться.