Domanda

La mia motivazione per questa domanda è in realtà solo per specificare un'immagine da utilizzare in un controllo utente tramite una proprietà di dipendenza per ImageSource. Sto colpendo alcuni punti critici che coinvolgono la gestione, l'accesso, e l'unità di test per questo.

  • è l'editor di risorse un buon strumento da utilizzare per mantenere le immagini per l'applicazione?
  • Qual è il modo migliore per tradurre il bitmap dall'editor a un ImageSource?
  • Come posso afferrare la risorsa Nome file dall'editor?
È stato utile?

Soluzione

No, l'editor di risorse non è uno strumento buono per questo.

In un'applicazione WPF il modo migliore è quello di mettere tutte le immagini in una directory di "Immagini" e contrassegnare ciascuno come una "risorsa". Quindi è possibile fare riferimento direttamente nei controlli immagine e altrove.

Ecco i passaggi precisi:

  • Ritaglia e altrimenti regolare le immagini utilizzando la bitmap preferito modifica del programma (Paint.NET, Photoshop, etc)
  • salvarli come file .png (o .jpg o .gif, se si preferisce)
  • Creare una cartella "Immagini" dentro la soluzione di Visual Studio (o cartelle multiple, comunque lo si voglia organizzare)
  • Trascina le immagini dal disco rigido nella cartella "Immagini" (oppure fare clic destro del progetto, selezionare Nuovo -> elemento esistente e selezionare le immagini)

Ora è possibile fare riferimento le immagini con facilità in XAML:

<Image Source="Images/MyImage.png" />

o nel codice:

var source = (BitmapSource)Application.LoadComponent(
               new Uri("Images/MyImage.png", UriKind.Relative));

Si può anche fare riferimento le immagini in assembly esterni:

<Image Source="ReferencedAssembly;v1.0.0.1;component/Images/MyImage.png" />

Che in codice sarebbe:

var source = (BitmapSource)Application.LoadComponent(
               new Uri("ReferencedAssembly;v1.0.0.1;component/Images/MyImage.png",
                 UriKind.Relative));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top