2010-09-24 14 views
28

necesito para configurar la fuente de imagen de forma dinámica, tenga en cuenta que mi imagen se encuentra en algún lugar de la red, aquí está mi códigoCambiar fuente de imagen en el código detrás - Wpf

BitmapImage logo = new BitmapImage(); 
logo.BeginInit(); 
logo.UriSource = new Uri(@"pack://application:,,,\\myserver\\folder1\\Customer Data\\sample.png"); 
logo.EndInit(); // Getting the exception here 
ImageViewer1.Source = logo; 

Excepción:

El El prefijo URI no se reconoce

Respuesta

47

Sólo se necesita una línea:

ImageViewer1.Source = new BitmapImage(new Uri(@"\myserver\folder1\Customer Data\sample.png")); 
+5

No es necesario para escapar de las barras invertidas si se utiliza una cadena textual –

4

La sintaxis del paquete que está utilizando aquí es para una imagen que está contenida como Recurso dentro de su aplicación, no para un archivo suelto en el sistema de archivos.

Usted simplemente desea pasar la ruta de acceso real a la UriSource:

logo.UriSource = new Uri(@"\\myserver\folder1\Customer Data\sample.png"); 
0

Usted está todo mal! ¿Por qué? Porque todo lo que necesita es que este código funcione:

(Ver imagen)/C# Img es: el cuadro de imagen

Tenga esto como está, sin cambios ("MS-appx: ///) este es el código no es el nombre de su aplicación Imágenes es su carpeta en su proyecto puede cambiarlo. dog.png es su archivo en su carpeta, así como hago mi carpeta 'Imágenes' y el archivo 'dog.png' Así que el uri es : "MS-appx: ///Images/dog.png" y mi código:


private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     img.Source = new BitmapImage(new Uri("ms-appx:///Images/dog.png")); 
    } 
+7

Este código funciona para Windows RT y Windows Phone, no WPF – Ali

+1

@AymanSammoudi Esto no funcionará para WPF –

51

Ninguna de las soluciones anteriores funcionó para mí. Pero esto no hizo:

myImage.Source = new BitmapImage(new Uri(@"/Images/foo.png", UriKind.Relative)); 
+4

+1 por ser tan reciente. También es lo único que funcionó para mí también. –

+0

! excelente y trabaje –

+2

Tenga en cuenta que esto _no funciona en UWP, porque UWP parece que solo acepta URIs absolutos. Así es como lo hago: 'myImage.Source = new BitmapImage (nuevo Uri (nuevo Uri (Directory.GetCurrentDirectory(), UriKind.Absolute), nuevo Uri (@"/Images/foo.png ", UriKind.Relative))) ; ' – Thought

2

Ninguno de los métodos trabajó para mí, ya que tenía que tirar de la imagen de una carpeta en lugar de añadirla a la aplicación. El código siguiente trabajó:

TestImage.Source = GetImage("/Content/Images/test.png") 

private static BitmapImage GetImage(string imageUri) 
     { 
      var bitmapImage = new BitmapImage(); 
      bitmapImage.BeginInit(); 
      bitmapImage.UriSource = new Uri("pack://siteoforigin:,,,/" + imageUri,    UriKind.RelativeOrAbsolute); 
      bitmapImage.EndInit(); 
      return bitmapImage; 
     } 
Cuestiones relacionadas