2010-09-24 11 views
28

ho bisogno di impostare sorgente di immagini in modo dinamico, si prega di notare la mia immagine è in qualche parte sulla rete, qui è il mio codiceVariazione fonte immagine in codice dietro - 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; 

Eccezione:

Il Prefisso URI non riconosciuto

risposta

47

Hai solo bisogno di una sola riga:

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

Non è necessario per sfuggire ai backslash se si utilizza una stringa verbatim –

4

La sintassi del pacchetto che si sta utilizzando qui è per un'immagine contenuta come Risorsa all'interno dell'applicazione, non per un file allentato nel file system.

Si vuole semplicemente passare il percorso effettivo al UriSource:

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

Tu sei tutto sbagliato! Perché? Perché tutto ciò che serve è il codice funzioni:

(immagine View)/C# IMG è: la tua casella di immagine

Tenetelo così com'è, senza modifiche ("MS-appx: ///) questo è il codice non è il nome della tua app Immagini è la tua cartella nel tuo progetto puoi cambiarla dog.png è il tuo file nella tua cartella, così come faccio la mia cartella 'Immagini' e file 'dog.png' Quindi l'uri è : "ms-appx: ///Images/dog.png" e il mio codice:


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

Questo codice funziona per Windows RT e Windows Phone, non WPF – Ali

+1

@AymanSammoudi Questo non funziona per WPF –

51

Nessuna delle soluzioni di cui sopra ha funzionato per me. Ma questo ha fatto:

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

+1 per essere così recenti. Inoltre è l'unica cosa che ha funzionato anche per me. –

+0

! eccellente e lavoro –

+2

Nota che questo non funziona in UWP, perché UWP sembra accettare solo URI assoluti. Ecco come faccio: 'myImage.Source = new BitmapImage (nuovo Uri (nuovo Uri (Directory.GetCurrentDirectory(), UriKind.Absolute), nuovo Uri (@"/Images/foo.png ", UriKind.Relative))) ; ' – Thought

2

Nessuno dei metodi lavorato per me come ho bisogno di tirare l'immagine da una cartella, invece di aggiungerla alla domanda. Il seguente codice ha funzionato:

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