web-dev-qa-db-fra.com

Ajout et chargement dynamiques d'images à partir de ressources en C #

Quelques images ont été ajoutées à ma solution. Pour le moment, il se trouve dans le dossier images\flowers\rose.png de l'explorateur de solutions. Je veux un moyen de charger dynamiquement cette image dans mon contrôle d'image. 

Mon approche actuelle consiste à créer le type 'contenu' et à utiliser les propriétés 'copier toujours'. Ensuite, je donnerais un chemin relatif à l'image comme ci-dessous.

Image2.Source = new BitmapImage(new Uri("/images/flowers/Customswipe_b.png", UriKind.Relative));

Existe-t-il un moyen de le charger depuis la ressource sans la copier sur le système cible.

9
logeeks

Ce qui suit fonctionne très bien pour moi:

image.Source = new BitmapImage(new Uri("pack://application:,,,/YourAssemblyName;component/Resources/someimage.png", UriKind.Absolute));

Aussi, vous devriez changer le Build Action de votre image de None à Resource.

14
Eric

Vous pouvez ouvrir l'éditeur de ressources (Explorateur de solutions, cliquez sur Resources.resx) et ajouter l'image à cet endroit. Ensuite, vous pouvez simplement y accéder en tant que Bitmap avec Properties.Resources.ImageId

http://msdn.Microsoft.com/en-us/library/3bka19x4(v=vs.100).aspx

6
MrDosu

Vous utilisez ceci: 

 Image2.Source = new Bitmap(
      System.Reflection.Assembly.GetEntryAssembly().
        GetManifestResourceStream("MyProject.Resources.myimage.png"));

Ou 

Image2.Source = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage);

Je recommande le second.

2
HichemSeeSharp

J'ai eu quelques problèmes pour trouver la syntaxe exacte pour l'URI, voyez donc ci-dessous plus de détails:

Si votre image (myImage.png) se trouve dans un sous-dossier "images" (à partir du répertoire racine), la syntaxe exacte est la suivante:

image.Source = new BitmapImage(new Uri(@"pack://application:,,,/images/myImage.png", UriKind.Absolute));

Si votre image se trouve dans le sous-dossier images/icon/ (à partir du répertoire racine), la syntaxe est la suivante:

image.Source = new BitmapImage(new Uri(@"pack://application:,,,/images/icon/myImage.png", UriKind.Absolute));
  • Notez que la pièce "pack://application:,,, ne change pas.
  • Assurez-vous de définir "Action de construction" sur "Ressources" 

Pour plus d'informations: voir ici .

1
Malick

La manière dont vous ajoutez une image, puis changez son "action de génération" en "ressources" fera également l'affaire, mais comme vous avez demandé l'ajout et le chargement à partir de ressources, l'approche serait différente pour accomplir la même tâche. Je voudrais vous fournir un lien pour lire certains articles de MSDN.

Ajout et modification de ressources (Visual C #)

0
DeshDeep Singh