Pregunta

Mi motivación para esta pregunta es realmente sólo para especificar una imagen para ser utilizado en un control de usuario a través de una propiedad de dependencia de ImageSource. Estoy golpeando algunos puntos de dolor relacionados con la gestión, el acceso, y la unidad de prueba para esto.

  • ¿Es el editor de recursos una buena herramienta a utilizar para mantener las imágenes para la aplicación?
  • ¿Cuál es la mejor manera de traducir el mapa de bits desde el editor a un ImageSource?
  • ¿Cómo puedo agarrar el recurso Nombre del archivo desde el editor?
¿Fue útil?

Solución

No, el editor de recursos no es una buena herramienta para ello.

En una aplicación de WPF la mejor manera es poner todas las imágenes en un directorio "Imágenes" y marque cada uno como un "recurso". A continuación, puede hacer referencia a ellos directamente en los controles de imagen y en otros lugares.

Estos son los pasos precisos:

  • Recortar y de otra manera ajustar las imágenes de mapa de bits utilizando su programa favorito (Paint.NET, Photoshop, etc) editar
  • guardarlas como archivos .png (o .jpg o .gif, si lo prefiere)
  • Crear una carpeta "Imágenes" dentro de su solución de Visual Studio (o varias carpetas, lo que le apetezca a organizarla)
  • Arrastre las imágenes de su disco duro en la carpeta "Imágenes" (o haga clic en el proyecto, seleccione Nuevo -> elemento existente y seleccionar las imágenes)

Ahora se puede hacer referencia a sus imágenes fácilmente en XAML:

<Image Source="Images/MyImage.png" />

O en código:

var source = (BitmapSource)Application.LoadComponent(
               new Uri("Images/MyImage.png", UriKind.Relative));

También puede hacer referencia a imágenes en montajes externos:

<Image Source="ReferencedAssembly;v1.0.0.1;component/Images/MyImage.png" />

Lo que en el código sería:

var source = (BitmapSource)Application.LoadComponent(
               new Uri("ReferencedAssembly;v1.0.0.1;component/Images/MyImage.png",
                 UriKind.Relative));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top