2010-09-24 26 views
28

Je dois régler la source d'image dynamique, s'il vous plaît noter mon image est quelque part sur le réseau, voici mon codeModifier la source d'image dans le code derrière - 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; 

Exception:

Le Le préfixe d'URI n'est pas reconnu

Répondre

47

Vous avez juste besoin d'une ligne:

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

Vous n'êtes pas obligé de les backslashs si vous utilisez une chaîne verbatim –

4

La syntaxe de pack que vous utilisez ici est pour une image contenue comme ressource dans votre application, pas pour un fichier lâche dans le système de fichiers.

Vous voulez simplement passer le chemin réel à l'UriSource:

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

Vous êtes tout faux! Pourquoi? Parce que tout ce dont vous avez besoin est que ce code fonctionne:

(Image View)/C# Img est: votre boîte d'image

Gardez cela tel quel, sans changement ("ms-appx: ///) ce code est pas votre nom d'application Images est votre dossier dans votre projet, vous pouvez le changer. dog.png est votre fichier dans votre dossier, ainsi que je fais mon dossier « Images » et le fichier « dog.png » ainsi, le uri est : "ms-appx: ///Images/dog.png" et mon code:


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

Ce code fonctionne pour Windows RT et Windows Phone, pas WPF – Ali

+1

@AymanSammoudi Cela ne fonctionnera pas pour WPF –

51

Aucune des solutions ci-dessus a fonctionné pour moi. Mais cela:

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

+1 pour être si récent. Aussi c'est la seule chose qui a fonctionné pour moi aussi. –

+0

! excellente et le travail –

+2

Notez que ce travail de _doesn't_ dans UWP, parce que UWP semble accepter seulement absolue URIs. Voici comment je le fais: 'myImage.Source = new BitmapImage (nouveau Uri (nouveau Uri (Directory.GetCurrentDirectory(), UriKind.Absolute), nouveau Uri (@ "/ Images/foo.png", UriKind.Relative))) " – Thought

2

Aucune des méthodes a fonctionné pour moi que je devais tirer l'image d'un dossier au lieu de l'ajouter à l'application. Le code ci-dessous travaillé:

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; 
     }