Приложение WPF показывает, что "Формат изображения непризнан"

У меня есть приложение WPF, которое отлично работает в ОС Windows 7. Но одно и то же приложение вылетает на некоторых компьютерах с Windows XP.

Он работает отлично на нескольких машинах Windows XP. но на нескольких компьютерах XP он не запускается.

ОШИБКА - Формат изображения непризнан.

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

Должен ли я изменить .ico, используемый для приложения.

Ответ 1

Если я правильно помню, Windows XP не поддерживает значки больше 48x48 pixels, и это может быть причиной сбоя. .ico файлы должны обязательно работать в обеих системах.

Вы можете создать значок, который поддерживает несколько размеров, поэтому, если вы добавите 48x48 и, например, 256x256 в один файл, вы должны быть хорошими. Также не забудьте использовать хорошее программное обеспечение для создания значка при создании значков, поддерживающих несколько размеров. Я использовал Greenfish Icon Editor, который, я думаю, работает нормально. Но для этого есть множество других продуктов.

Обязательно прочитайте Справочник ICON, раздел Windows, в нем содержится хорошая информация о том, какие размеры значков и глубины бит использовать.


Другие потоки на SO поддерживают мое убеждение:

проблемы с изображением значков

Какие значки должны содержать иконки моего приложения Windows?

Ответ 2

К сожалению, просто удаление приложения 256x256 не является самым большим решением, если вы хотите поддерживать большой размер значка для Windows Vista, 7, 8 и вперед.

Еще один способ решить эту проблему - не сжимать изображение 256x256 в значке. См. Этот форум для получения дополнительной информации.

Как это сделать? Наилучшим образом, большинств утилиты значка будут иметь вариант для этого (по мере того как это будет общей проблемой). Я использую IcoFX, и ниже вы можете увидеть опцию (выделено красным цветом). Мне нужно было очистить.

IcoFX Screenshot

Ответ 3

Сегодня утром мне было очень весело с этой проблемой. Оказалось, что ошибка произошла только на машинах XP, где настройки цвета были установлены на 16 бит, а когда я изменил ее на 32-разрядную, проблема волшебным образом исчезла.

Это относится к XP (включая Embedded) SP3.

Ответ 4

В вашем приложении WPF у вас будет как минимум два места для установки значков:

  • Значок приложения. Это используется для отображения приложения в проводнике, на рабочем столе и т.д. Вы устанавливаете это в свойствах проекта.
  • Значок окна. Это используется как значок в верхнем левом углу окна и, возможно, для alt-tabbing и на панели задач. Вы устанавливаете это как свойство Icon в окне.

Часто вы можете использовать один и тот же файл значков в обоих случаях. Однако, если у вас есть сжатый значок 256x256 в виде значка окна, это может привести к сбою в Windows XP. Это то, что вы испытываете. С другой стороны, это не тот случай, когда значок приложения имеет сжатый значок 256x256.

Итак, еще одно решение (которое я реализовал во всех моих проектах) - это два значка: значок приложения (который содержит все размеры) и специальная версия "значок окна", которая содержит только размеры 16x16 и 32x32 (поскольку эти являются единственными размерами, которые используются).

Ответ 5

Другим обходным решением проблемы (проблема 16/32-разрядного разрешения) является не определение значка в XAML, а загрузка его в код:

 this.Icon = new BitmapImage(new Uri("pack://application:,,,/UserInterface;component/Resources/Icons/ReportViewer.ico"));