Question

Ma motivation pour cette question est vraiment juste de spécifier une image à utiliser dans un contrôle utilisateur via une propriété de dépendance pour ImageSource. Je suis frappé certains points de douleur impliquant la gestion, l'accès et les tests unitaires pour cela.

  • L'éditeur de ressources un bon outil à utiliser pour maintenir des images pour l'application?
  • Quelle est la meilleure façon de traduire le Bitmap de l'éditeur à un ImageSource?
  • Comment puis-je récupérer la ressource Nom du fichier de l'éditeur?
Était-ce utile?

La solution

Non, l'éditeur de ressources n'est pas un bon outil pour cela.

Dans une application WPF la meilleure façon est de mettre toutes vos images dans un « Images » répertoire et marquer chacun comme une « ressource ». Ensuite, vous pouvez les référencer directement dans les contrôles d'image et ailleurs.

Voici les étapes précises:

  • cultures et autres ajuster vos images à l'aide de votre programme d'édition bitmap favori (Paint.NET, Photoshop, etc.)
  • Enregistrer les fichiers en .png (ou .jpg ou .gif si vous préférez)
  • Créer un « Images » dossier dans votre solution Visual Studio (ou plusieurs dossiers, mais vous voulez organiser)
  • Faites glisser les images de votre disque dur dans votre « Images » (ou dossier clic droit sur le projet, sélectionnez Nouveau -> un élément existant et sélectionnez les images)

Maintenant, vous pouvez référencer vos images facilement en XAML:

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

Ou dans le code:

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

Vous pouvez également référencer des images dans des ensembles externes:

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

Ce qui dans le code serait:

var source = (BitmapSource)Application.LoadComponent(
               new Uri("ReferencedAssembly;v1.0.0.1;component/Images/MyImage.png",
                 UriKind.Relative));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top