Accéder aux ressources d'une dll

[Résolu]
Signaler
Messages postés
3
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
16 avril 2009
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
Bonjour à tous, je suis un petit nouveau en C# et WPF et je dois faire un UserControl un peu compliqué (pour moi bien sûr ).

J'ai une application de départ qui à son ouverture doit regarder dans un répertoire, qui lui est passé en paramètre, et pour chaque dll contenu dans ce répertoire, elle doit chercher une image embedded (nommée splash.png) et créer un bouton pour chaque image.

Je viens donc vous demander de l'aide car je ne sais vraiment pas comment faire pour rechercher cette image dans une dll.

Merci d'avance

5 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
49
Salut

La classe Assembly (avec ses méthodes statiques te permettra de trouver l'assembly de ta dll).
Une fois que c'est fait, tu pourras utiliser la méthode GetManifestResourceNames() (toujours de la classe Assembly) afin de voir toutes les ressources de l'assembly, et en l'occurrence, le nom exact de la ressource que tu cherches.
Ensuite, tu devras utiliser GetManifestResourceStream(nom) ce qui te permettra de récupérer le stream et ainsi de créer ton image (je ne sais plus exactement comment on génère une image à partir d'un stream en WPF, mais je sais que ce n'est pas bien compliqué).

Krimog :
while (!(succeed = try())) ;
Messages postés
3
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
16 avril 2009

Merci beaucoup e ta réponse, ça marche nickel
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
49
Bah de rien ;)

A ce propos, c'est quoi la ligne de code pour générer une Image à partir d'un Stream please ?

Krimog :
while (!(succeed = try())) ;
Messages postés
3
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
16 avril 2009

Désolé du temps de réponse, voilà ce que j'ai fait pour mon bouton

foreach (string source in assembly.GetManifestResourceNames())
{
         if (source.Contains("splash"))
         {
             Button b = new Button();
             Image myImage = new Image();
             myImage.Width = 200;

             BitmapImage myBitmapImage = new BitmapImage();
             myBitmapImage.BeginInit();
             myBitmapImage.StreamSource = assembly.GetManifestResourceStream(source);

              myBitmapImage.DecodePixelWidth = 200;
              myBitmapImage.EndInit();

              myImage.Source = myBitmapImage;

             b.Content = myImage;
         }
}
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
49
Merci ;)

Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -