WPF-importer une image en tant que ressource

Je me suis enseigné WinForms récemment, mais je suis maintenant passé au WPF plus moderne, ce qui est tellement mieux!

La seule chose dont je suis confus pour le moment est d'utiliser des images. Maintenant, dans WinForms, vous l'avez importé en tant que ressource et l'image fonctionnerait toujours lorsqu'elle est compilée dans le dossier / bin / Debug.

Je ne peux pas comprendre comment le faire fonctionner en WPF, quand je lance l'application, l'image ne se charge pas, parce que l'image est enregistrée dans /Projects/AppName/images/, et l'application est compilé dans /Projects/AppName/bin/Debug Quand je l'exécute en mode débogage.

Ai-je simplement besoin de faire une copie de mon dossier Images et de le mettre là où l'application est compilée? Ou est-il une autre façon. Voici mon code qui affiche mon image:

<Image Width="300">
    <Image.Source>
        <BitmapImage DecodePixelWidth="300" UriSource="/images/jamsnaps-dark.png" />
    </Image.Source>
</Image>
21
demandé sur Martyn Ball 2014-09-07 23:45:09

3 réponses

  • Créez un dossier (par exemple images) dans votre projet Visual Studio.
  • Ajouter le fichier image(s) à ce dossier.
  • Définir leur Build Action à Resource (dans la fenêtre des Propriétés, voir la deuxième image dans cette réponse).

Ensuite, écrivez la propriété UriSource comme vous l'avez déjà fait:

UriSource="/images/jamsnaps-dark.png"

Cet URI est effectivement un URI du pack de fichiers de ressources , où le préfixe est automatiquement ajouté par WPF.

32
répondu Clemens 2017-05-23 12:34:36

Deux options :

1) Sortez de bin / Debug et dans votre dossier d'application par ../.. puis, à votre image.

  <Image>
      <Image.Source>
           <BitmapImage  UriSource="../../images/jamsnaps-dark.png" />
      </Image.Source>
   </Image>

2) compilez vos images en tant que contenu à partir des propriétés dans le menu contextuel du fichier image , puis lorsqu'elles sont compilées, elles sont placées dans le débogage. Je ne me souviens pas si vous devez également leur dire de copier local aussi dans les propriétés (Je ne suis pas près d'un ordinateur pour le moment, donc je ne peux pas vérifier .

1
répondu eran otzap 2014-09-07 19:59:29
  1. Ajoutez l'image au répertoire de votre projet
  2. dans l'Explorateur de solutions, cliquez avec le bouton droit sur l'image et sélectionnez Include in Project

L'Action de construction doit être définie sur Resource par défaut.

, Vous pouvez alors commencer à utiliser le chemin de l'image par rapport à la racine par exemple images/text.jpg si vous le mettez dans un dossier appelé images.

0
répondu codeafin 2018-05-26 20:47:59