Mon assemblage comprend une image avec BuildAction==Resource. Je veux obtenir une image BitmapImage à partir de cette ressource intégrée.
Je peux charger une image bitmap à partir d'un fichier comme suit :
var bitmap = new BitmapImage(new Uri(path));
Mais comment créer un Uri qui renvoie à une image ressource intégrée ?
Lorsque j'essaie de créer un fichier ' pack URI (par exemple pack://application:,,,/MyImage.png
o pack://application:,,,/MyAssembly;component/MyImage.png
), une exception est levée :
System.UriFormatException "URI non valide : Un port était attendu en raison de la présence de deux points (':'), mais le port n'a pas pu être analysé."
J'ai trouvé la solution à l'exception UriFormatException dans ce qui suit article de blog
Cependant, une fois cette correction appliquée, j'obtiens toujours des exceptions en essayant de charger une image BitmapImage à partir d'un URI de pack.
Lors de l'utilisation du pack://application:,,,/Image.png
j'obtiens une NullReferenceException, et lorsque j'utilise le format pack://application:,,,/AssemblyName;component/Image.png
j'obtiens une NotSupportedException "Le préfixe Uri n'est pas reconnu".
Résumé Mon problème était que j'essayais d'utiliser un "pack URI" dans un processus avant qu'aucun contrôle WPF/fenêtre/etc n'ait été instancié, de sorte que le schéma URI "pack" n'était pas encore enregistré (d'autres "trucs" requis par WPF ne doivent pas non plus être définis, car l'enregistrement manuel du schéma "pack" ne résout pas le problème en soi). La solution consistait à attendre l'instanciation de mon usercontrol WPF pour utiliser les URI de pack.
1 votes
Merci pour votre résumé du problème. J'ai le même problème et je vais essayer de le contourner comme vous le suggérez.
0 votes
Duplication possible de Chargement d'une image bitmap dans le code