2012-09-12 6 views
10

Tengo una aplicación WPF que funciona bien en el sistema operativo Windows 7. Pero la misma aplicación falla en algunas máquinas Windows XP en particular.La aplicación WPF muestra "El formato de imagen no se reconoce"

Funciona bien en algunas máquinas con Windows XP. pero en algunas máquinas XP no puede comenzar.

ERROR - El formato de la imagen no se reconoce.

Sé que esta pregunta se ha realizado pocas veces. pero mi problema es que todavía no soy capaz de resolver cómo resolver esto.

¿Debo cambiar la .ico utilizado para la aplicación ..

Respuesta

2

Si no recuerdo mal de Windows XP no es compatible con iconos más grandes que 48x48 pixels y esto podría ser la razón de la caída. Los archivos .ico definitivamente deberían ejecutarse en ambos sistemas.

Puede crear un ícono que admita varios tamaños, por lo que si agrega 48x48 y por ejemplo 256x256 en el mismo archivo, debería estar bien. También asegúrese de usar seleccionar un buen software para producir el ícono al hacer íconos que admitan múltiples tamaños. He usado Greenfish Icon Editor que creo que funciona bien. Pero hay multitud de otros productos para esto.

Asegúrese de leer The ICON handbook, section Windows, contiene buena información sobre qué tamaño de icono y profundidades de bit utilizar.


Otras discusiones sobre SO apoya mi creencia:

problems with icon image

Which icon sizes should my Windows application's icon include?

+0

gracias @Avada Kedavra .. pero funciona absolutamente bien en algunas máquinas .. ¿Tiene algo que ver con la resolución? – Sandepku

+0

resolución ... suena exagerado. pero realmente no lo sé –

+0

el error fue con un icono de 256X256 ... ahora funciona bien ... gracias por los enlaces ... agradezco que ... – Sandepku

10

Desafortunadamente, la simple eliminación de la aplicación de 256x256 no es la mejor solución cuando se quiere apoyar el icono grande tamaño para Windows Vista, 7, 8 y adelante.

Otra forma de resolver este problema ... es no comprimir la imagen de 256x256 en el icono. Consulte esto forum thread para obtener más información.

¿Cómo se hace eso? Bueno, la mayoría de las utilidades de íconos tendrán una opción para esto (ya que este es un problema común). Yo uso IcoFX y abajo puede ver la opción (resaltada en rojo) que necesitaba borrar.

IcoFX Screenshot

+0

Mi agradecimiento a esta publicación (http://stackoverflow.com/questions/8971751/the-image- format-is-unrecognized-depends-on-monitor) que tenía una respuesta con el enlace del foro en ella ... que fue la inspiración/solución original. – cplotts

+1

La compresión hace una gran diferencia, mi ícono pasó de 39kb a 288kb. – tofutim

+0

@tofutim, sí, eso es correcto ... pero eso es necesario si desea admitir Windows XP. – cplotts

2

En su aplicación WPF que tendrá al menos dos lugares para colocar iconos:

  1. El icono de la aplicación. Esto se usa para mostrar la aplicación en Explorer, escritorio, etc. Usted configura esto en las propiedades del proyecto.
  2. El icono de la ventana. Esto se usa como ícono en la esquina superior izquierda de la ventana, y tal vez para alt-tabbing y en la barra de tareas. Usted establece esto como la propiedad Icon en la ventana.

A menudo, puede utilizar el mismo archivo de icono en ambos casos. Sin embargo, si tiene un icono comprimido de 256x256 como icono de ventana, esto puede fallar en Windows XP. Esto es lo que estás experimentando.Por otro lado, este no es el caso cuando el icono de la aplicación tiene un icono comprimido de 256x256.

Otra solución (que implementé en todos mis proyectos) es tener dos iconos: el icono de la aplicación (que contiene todos los tamaños) y una versión especial de "icono de ventana", que solo contiene los tamaños 16x16 y 32x32 (esos son los únicos tamaños que se usan).

6

He tenido un poco de diversión con este problema esta mañana. Resultó que el error estaba ocurriendo solo en las máquinas con XP, donde las configuraciones de color estaban configuradas en 16 bits, y cuando lo cambié a 32 bits, el problema desapareció mágicamente.

Esto se aplica a XP (incluido Embedded) SP3.

+0

+1 Buena observación. Me salvaste el día :). Esto me ayudó a descubrir que la sesión RDP con color de 16 bits causó que mi aplicación fallara, aunque pude iniciarla desde la sesión VNC que tenía 32 bits de color. – kiran

0

Otra solución a (problema 16/resolución de 32 bits) no es definir icono en XAML, pero cargarlo en código:

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