Almacenamiento de recursos de imágenes de WPF

Resuelto driis asked hace 15 años • 11 respuestas

Para una aplicación WPF que necesitará entre 10 y 20 iconos e imágenes pequeños con fines ilustrativos, ¿almacenarlos en el ensamblado como recursos integrados es el camino correcto a seguir?

Si es así, ¿cómo especifico en XAML que un control Imagen debe cargar la imagen desde un recurso incrustado?

driis avatar Dec 07 '08 21:12 driis
Aceptado

Si va a utilizar la imagen en varios lugares, entonces vale la pena cargar los datos de la imagen solo una vez en la memoria y luego compartirlos entre todos los Imageelementos.

Para hacer esto, cree un BitmapSource recurso en algún lugar:

<BitmapImage x:Key="MyImageSource" UriSource="../Media/Image.png" />

Luego, en tu código, usa algo como:

<Image Source="{StaticResource MyImageSource}" />

En mi caso, descubrí que tenía que configurar el Image.pngarchivo para que tuviera una acción de compilación Resourceen lugar de solo Content. Esto hace que la imagen se lleve dentro de su ensamblaje compilado.

Drew Noakes avatar Mar 03 '2009 16:03 Drew Noakes

Descubrí que la mejor práctica para usar imágenes, videos, etc. es:

  • Cambie sus archivos "Acción de compilación" a "Contenido" . Asegúrese de marcar Copiar al directorio de compilación .
    • Se encuentra en el menú "Clic derecho" en la ventana del Explorador de soluciones.
  • Fuente de la imagen en el siguiente formato:
    • "/ «TuNombreEnsamblaje» ;componente/«TuRuta»/ «TuImagen.png» "

Ejemplo

<Image Source="/WPFApplication;component/Images/Start.png" />

Beneficios:

  • Los archivos no están incrustados en el ensamblaje.
    • El Administrador de recursos generará algunos problemas de desbordamiento de memoria con demasiados recursos (en el momento de la compilación).
  • Se puede llamar entre ensamblajes.
Nuno Rodrigues avatar Mar 10 '2010 11:03 Nuno Rodrigues