Différences entre ressources et content.

Différences entre ressources et content.

Lorsque l’on ajoute une image a un projet, on est confronté à choisir entre la mettre en ressources et la mettre en contenu (build action). Nous allons donc étudier la différence entre les deux actions et surtout les avantages et inconvénients de chacune.

La différence

La principale différence entre les deux types est qu’une ressource est incluse dans la dll, alors qu’un contenu est un fichier a coté de la dll (à ne pa confondre avec l’isolated Storage qui est un répertoire bien distinct dans le monde silverlight).

Pour bien comparer les deux types, il suffit se “dézipper” un xap (renommez le en zip et ouvrez le avec votre gestionnaire de fichiers compressés favoris) et de voir qu’en effet, on retrouve bien nos images mises en contenu et que nos images mises en ressources ne sont pas visible.

Comment référencer un fichier

Chemin relatif au xaml/cs

Avec un chemin relatif, on rencontre peu de problème. Que votre image soit contenue ou en ressource, il suffit d’écrire le path depuis votre xaml/cs d’appel :

exemple : ‘../monImage.png’, ‘monImage.png’ ou encore ‘dossier/monImage.png’

Chemin relatif au root

Pour une image ‘contenue’

En réalité, on parle plutôt de chemin relatif au root. Pour référencer un fichier “contenu”, il suffit d’utiliser une uri commençant par un slash.

en xaml :

<Image Stretch="None" Source="/images/monImage.png"/>

en C# :

Uri uri = new Uri("/images/monImage.png", UriKind.Relative);
BitmapImage imgSource = new BitmapImage(uri);

Pour une image en ressource

Pour référencer un fichier en ressource c’est un peu plus compliqué, il faut utiliser :

<nom du projet>;component/<path>

en XAML :

<Image Source="/MonProjet;component/images/monImage.png"/>

en C# :

Uri uri = new Uri("/MonProjet;component/images/monImage.png", UriKind.Relative);
this.Image.Source = new BitmapImage(uri);

Vous l’aurez compris, si vous avez besoin de renommer votre projet, il faudra aussi faire attention modifier les uri correspondant aux ressources.

Performances

Un fichier ressource sera chargé plus rapidement lorsque essayera de le référencer, toutefois le lancement de l’application se verra ralenti. Il est donc conseillé d’utiliser les ressources pour des fichiers indispensables au lancement de l’application, comme par exemple le fond d’écran. A l’inverse un fichier en content, n’aura aucun impacts sur le

lancement de l’application, mais son chargement quand on le référencera sera plus lent.

Comments are closed.