Je viens d'un environnement principalement Web et un peu Windows Forms. Pour un nouveau projet, nous utiliserons WPF. L'application WPF aura besoin de 10 à 20 petites icônes et images à des fins d'illustration. Je pense à les stocker dans l'assembly en tant que ressources intégrées. Est-ce la bonne façon de procéder?
Comment spécifier dans XAML qu'un contrôle Image doit charger l'image à partir d'une ressource intégrée?
la source
DynamicResource
extension de balisage au lieu deStaticResource
, en supposant que vous connaissiez les clés au moment de la compilation. Dans WPF, vous pouvez créer des dictionnaires de ressources lors de l'exécution. En fait, c'est ce qui se passe lorsque vous chargez un document Xaml, c'est juste que vous ne voyez pas l'équivalent C #.Width="{Binding Source.PixelWidth, RelativeSource={RelativeSource Self}}"
auImage
, car sinon je vois souvent des images devenir grotesquement agrandies pour une raison quelconque (comme des icônes 16x16 étirées pour quelque chose qui ressemble à 200x200 pixels).J'ai trouvé que la meilleure pratique d'utilisation d'images, de vidéos, etc. est:
Exemple
Avantages:
la source
Certaines personnes demandent à faire cela dans le code et à ne pas obtenir de réponse.
Après avoir passé de nombreuses heures à chercher, j'ai trouvé une méthode très simple, je n'ai trouvé aucun exemple et je partage donc la mienne ici qui fonctionne avec les images. (le mien était un .gif)
Sommaire:
Il renvoie un BitmapFrame que les "destinations" ImageSource semblent aimer.
Utilisation:
Méthode:
Apprentissage:
D'après mes expériences, la chaîne de pack n'est pas le problème, vérifiez vos flux et surtout si la lire la première fois a mis le pointeur à la fin du fichier et vous devez le remettre à zéro avant de relire.
J'espère que cela vous épargnera les nombreuses heures que je souhaite que cette pièce ait pour moi!
la source
Dans le code pour charger une ressource dans l'assembly en cours d'exécution où mon image
Freq.png
était dans le dossierIcons
et définie commeResource
:J'ai aussi fait une fonction:
Utilisation (en supposant que vous placez la fonction dans une classe ResourceHelper):
Remarque : voir les URI du pack MSDN dans WPF :
pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml
la source
new Uri(@"pack://application:,,,/" + pathInApplication)
également fait l'affaire.Oui, c'est la bonne façon.
Vous pouvez utiliser l'image dans le fichier de ressources en utilisant simplement le chemin:
Vous devez définir l'action de génération du fichier image sur "Ressource".
la source
Description complète de l'utilisation des ressources: ressources d' application, contenu et fichiers de données WPF
Et comment les référencer, lisez «Pack URIs in WPF».
En bref, il existe même des moyens de référencer les ressources des assemblys référencés / référencés.
la source
Cela a fonctionné pour moi:
la source
Si vous utilisez Blend , pour le rendre plus facile et sans difficulté à obtenir le chemin d'accès correct pour l' attribut Source , faites simplement glisser et déposez l'image du panneau Projet sur le concepteur.
la source
Oui, c'est la bonne façon. Vous pouvez utiliser des images dans le fichier de ressources en utilisant un chemin:
la source
Les éléments suivants ont fonctionné et les images à définir sont les ressources dans les propriétés:
la source