Mon assembly inclut une image avec BuildAction == Resource. Je veux obtenir un bitmapImage à partir de cette ressource incorporée.Comment puis-je obtenir une image BitmapImage à partir d'une ressource?
Je peux charger un fichier de BitmapImage comme ceci:
var bitmap = new BitmapImage(new Uri(path));
Mais comment je créer un Uri qui référence à une image de ressource incorporée?
Lorsque je tente de créer un 'pack URI' (par exemple pack://application:,,,/MyImage.png
ou pack://application:,,,/MyAssembly;component/MyImage.png
), une exception est levée:
System.UriFormatException « URI non valide: Un port était attendu en raison de il y a deux points (':') présent mais le port n'a pas pu être analysé. "
Je trouve le correctif, la UriFormatException dans ce blog post
Cependant, avec ce correctif appliqué, je reçois toujours des exceptions en essayant de charger un BitmapImage d'un URI paquet. Lorsque j'utilise le format pack://application:,,,/Image.png
, j'obtiens une exception NullReferenceException et lorsque j'utilise le format pack://application:,,,/AssemblyName;component/Image.png
, j'obtiens une exception NotSupportedException "Le préfixe Uri n'est pas reconnu".
Résumé Mon problème était que je tentais d'utiliser un « pack URI » dans un processus avant tout contrôle WPF/fenêtre/etc avait été instancié, de sorte que le schéma d'URI « pack » n'a pas encore registered (l'autre WPF requis 'stuff' ne doit pas non plus être paramétré, car l'enregistrement manuel du pack ne résout pas lui-même le problème). La solution consistait à attendre après l'instanciation de mon contrôle utilisateur WPF pour utiliser les URI pack.
Merci pour votre résumé du problème. J'ai le même problème et j'essaierai de le contourner comme vous le suggérez. – Oskar
duplication possible de [Chargement de BitmapImage dans le code] (http://stackoverflow.com/questions/801833/loading-bitmapimage-in-code) –