2010-04-18 14 views
9

Ho un'immagine lock.png accanto al mio file exe WPF nella cartella images. Ora, sto andando caricarlo nel progetto WPF come immagine, ho usato il seguente codice XAML:Caricamento di un'immagine esterna tramite codice XAML in WPF?

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

Funziona, ma Expression Blend o Visual Studio non mostra quando sto lavorando sul progetto.
Come possiamo mostrare immagini esterne in queste situazioni?

risposta

-1

Il tuo IDE primario è Visual Studio? Se sì, perché fare questo manuale? Nella finestra Propties puoi semplicemente esplorare la modalità che desideri utilizzare con il componente Image

+0

L'immagine che ho usato, è un'immagine esterna e non è in 'Proprietà'. –

+0

Forse aggiungerlo alla soluzione del progetto di Visual Studio potrebbe aiutarti. Oppure non vuoi? C'è qualche scopo che deve rimanere "esterno"? – Xorty

+0

Voglio usare immagini esterne perché voglio cambiarle facilmente ogni volta che voglio e senza cambiare i codici. Voglio anche diminuire il volume del file exe principale. –

4

Prova a caricare l'immagine in modo dinamico. Questo dovrebbe essere su xaml:

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

E questo nel codice dietro. Su Window_Loaded o nel costruttore della finestra:

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

Grazie, ma non volevo.Inoltre se hai testato il tuo codice puoi vedere la soluzione non funziona per il problema –

+0

Potrebbe non funzionare per questo problema, ma ha risolto il mio problema di caricare le immagini esterne in modo dinamico ... The CurrentDomain.BaseDirectory ha fatto il trucco per me !!! – Loudenvier

1

Se l'immagine è relativa alla propria posizione EXE solo fare

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

Se l'immagine non è relativo, allora avete un problema più grande. la sintassi del pacchetto è utile solo se in realtà "impacchetta" la risorsa nell'assembly.

Il problema con le immagini sciolti e Blend è che si fondono ospita l'exe in una directory temp che controlla e cerca le immagini relative a quella directory temp, che sarà vite ogni pathing si sono in funzione.

+0

Grazie amico, quindi se voglio usare un'immagine esterna, non posso lavorarci su in tempo di sviluppo? è giusto? –

+0

La soluzione che ho postato non funziona? che dovrebbe funzionare per URI relativi altrimenti un URI completo dovrebbe funzionare correttamente. –

+0

La tua soluzione è per le situazioni in cui abbiamo inserito un'immagine nel progetto, nel mio caso non voglio inserire l'immagine nel progetto –

4

Usa formato come: progetto; component/ImagePath

esempio

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

Dove ImageDemo è il nome del progetto, Immagine/ISIBAR.png è il percorso all'interno del progetto

0

avevo stessa domanda.

Assicurarsi che l'azione di creazione immagine sia impostata su Risorsa. (Tasto destro del mouse su un'immagine e poi andare alle proprietà, impostare costruire l'azione a risorsa)

Inoltre, invece di siteoforigin applicazione autorità utilizzo

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

0

E 'molto semplice, il tuo l'immagine non viene visualizzata perché non viene letta dall'applicazione dopo averla eseguita.

Un modo rapido per aggirare questo è facendo cadere manualmente l'immagine dalla cartella fisica alla cartella nell'applicazione. Una volta lì, l'applicazione sarà in grado di leggerlo.

0

potrebbe essere più facile:

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

Ricordate le barre rovesciate!