2010-04-18 12 views
9

Tengo una imagen lock.png junto a mi archivo WPF exe en la carpeta images. Ahora, voy a cargarlo en el Proyecto de WPF como una imagen, he utilizado el siguiente código XAML:Cargando una imagen externa a través del código XAML en WPF?

<Image Stretch="Fill" Source="pack://siteoforigin:,,,/images/lock.png" /> 

Funciona, pero Expression Blend o Visual Studio no muestra que cuando estoy trabajando sobre el proyecto.
¿Cómo podemos mostrar imágenes externas en estas situaciones?

Respuesta

-1

¿Es su IDE Visual Studio principal? En caso afirmativo, ¿por qué hacer esto manualmente? En la ventana de Propeties, puede navegar hasta la imagen que desea usar con su componente de imagen

+0

La imagen que he usado, es una imagen externa y no está en 'Propiedades'. –

+0

Tal vez agregarlo a la solución de proyecto de estudio visual lo ayude. ¿O no quieres? ¿Hay algún propósito que debe seguir siendo "externo"? – Xorty

+0

Quiero usar imágenes externas porque quiero cambiarlas fácilmente cuando quiera y sin cambiar los códigos. También quiero disminuir el volumen del archivo exe principal. –

4

Intente cargar su imagen dinámicamente. Esto debería estar en xaml:

<Image Stretch="Fill" Name="MyImage" /> 

Y esto en código detrás. En Window_Loaded o en el constructor de la ventana:

if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "images/lock.png")) 
      { 
       Uri uri = new Uri(AppDomain.CurrentDomain.BaseDirectory + "images/lock.png", UriKind.RelativeOrAbsolute); 
       MyImage.Source = BitmapFrame.Create(uri); 
      } 
+0

Gracias, pero no lo quería. Además, si probaba su código, podía ver que su solución no funciona para el problema. –

+0

Puede que no funcione para este problema, pero resolvió mi problema de cargar imágenes externas dinámicamente ... ¡El CurrentDomain.BaseDirectory hizo el truco para mí! – Loudenvier

1

Si la imagen es relativa a su ubicación EXE acaba de hacer

<Image Source="Images\lock.png" /> 

Si la imagen no es relativa a continuación, usted tiene un problema más grande. la sintaxis del paquete solo es útil si realmente está "empaquetando" el recurso en su conjunto.

El problema con las imágenes sueltas y Blend es que Blend aloja su exe en un directorio temporal que controla y busca imágenes relativas a ese directorio temporal, lo que atornillará cualquier ruta de la que dependa.

+0

Gracias amigo, entonces si quiero usar una imagen externa, no puedo trabajar en ella en el tiempo de desarrollo? ¿Es correcto? –

+0

¿La solución que publiqué no funciona? que debería funcionar para URI relativo; de lo contrario, un URI completamente calificado debería funcionar bien. –

+0

Su solución es para situaciones en las que hemos insertado una imagen en el proyecto. En mi caso, no quiero insertar la imagen en el proyecto. –

4

Uso formato como: Proyecto; componente/ImagePath

por ejemplo,

<Image Source="ImageDemo;component/Images/ISIBAR.png" Name="custLogo"/> 

Dónde ImageDemo es el nombre del proyecto, Imagen/ISIBAR.png es el camino dentro del proyecto

0

tuve misma pregunta.

Asegúrate de que la acción de creación de imágenes esté configurada como Recurso. (Clic derecho en una imagen y luego ir a propiedades, establezca ampliar la acción de recursos)

Además, en lugar de la autoridad de aplicación utilización siteoforigin

fuente: https://stackoverflow.com/a/18175145/2672788

0

Es muy simple, su la imagen no se muestra porque la aplicación no la está leyendo después de ejecutarla.

Una forma rápida de evitar esto es colocar manualmente la imagen de la carpeta física en la carpeta de la aplicación. Una vez que esté allí, la aplicación podrá leerlo.

0

podría ser más fácil:

<Image x:Name="ImageObject" Source="file:///C:\\1.jpg"/> 

recuerdo las barras invertidas!

Cuestiones relacionadas