Almacenamiento de recursos de imágenes de WPF
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?
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 Image
elementos.
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.png
archivo para que tuviera una acción de compilación Resource
en lugar de solo Content
. Esto hace que la imagen se lleve dentro de su ensamblaje compilado.
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.