2010-06-06 8 views
1

Je veux stocker des images dans un fichier .dll et les utiliser pour mon application winform. mais je ne suis pas en mesure de charger le contenu .dllRessources d'image dans WinForms

System.IO.Stream stream; 
    System.Reflection.Assembly assembly; 
    Image bitmap; 
    assembly = System.Reflection.Assembly.LoadFrom(Application.ExecutablePath); 
    stream = assembly.GetManifestResourceStream("global::template.Properties.Resources.test.png"); 
    bitmap = Image.FromStream(stream); 
    this.background.titleImage = bitmap; // image box 

Répondre

2

Vous utilisez un mauvais nom, "global ::" n'apparaît pas dans le nom de la ressource du manifeste. Un nom typique serait project .test.png si vous avez ajouté la ressource au projet et que vous avez défini son action de construction sur "Embedded Resource". Pour éviter de deviner le nom, utilisez Ildasm.exe et recherchez le fichier .mresource dans le manifeste. Toutefois, votre nom suggère que vous avez ajouté la ressource dans l'onglet Project + Properties, Resources. Bonne idée, cela génère automatiquement un nom de propriété pour la ressource. Vous utiliseriez projet .Properties.Resources.test pour le référencer. Vous obtiendrez une image en arrière, pas besoin d'utiliser GetManifestResourceStream.

Le projet Le nom ci-dessus est le nom d'espace de nom par défaut que vous avez attribué au projet. Projet + Propriétés, onglet Application, Paramètre d'espace de noms par défaut.

2

Le problème le plus probable est que le chemin que vous spécifiez dans GetManifestResourceStream() est incorrect.

je trouve utile le suivant pour déboguer ces questions:

  1. Rassemblement qui a la ressource incorporée en elle, dans le réflecteur.
  2. Ouvrez le dossier Ressources.
  3. Dans la liste des chemins de ressources \ dossiers, recherchez celui avec votre ressource.
  4. Si vous ne trouvez pas votre ressource, l'avez-vous marquée comme une ressource intégrée?
  5. Votre chemin de ressource sera "Dossier de ressources" + "." + "nom de la ressource".

par exemple. "PrismDemo.Properties.Resources.resources.app.ico"