2010-07-28 25 views
2

Je travaille sur une application Silverlight et j'ai du mal à définir le chemin relatif d'une image dans mon application.Impossible de trouver l'image en indiquant le chemin relatif dans Silverlight

Voici une brève image de mon répertoire du projet:

MyProject images L L mountain1.jpg L SpriteObjects L MountainFactory.cs L GameScreen.xaml

A l'origine, je peint un rectangle en utilisant un pinceau d'image à partir du GameScreen.xaml.

<Rectangle Name="rec_bg" HorizontalAlignment="Left" VerticalAlignment="Top" Width="800" Height="600"> 
    <Rectangle.Fill> 
     <ImageBrush x:Name="ib_bg" ImageSource="./images/mountain1.jpg" ></ImageBrush> 
    </Rectangle.Fill> 
</Rectangle> 

Ce code xaml fonctionne, c'est-à-dire qu'il peut trouver l'image dans le dossier images sans aucun problème. Je veux changer l'image dynamiquement, et j'ai créé une classe appelée MountainFactory.cs. Dans cette classe, j'ai une méthode avec ce code:

ImageBrush brush = new ImageBrush(); 
BitmapImage image = new BitmapImage(new Uri("./images/mountain" + level + ".jpg", UriKind.Relative)); 
brush.ImageSource = image; 

Cette méthode renvoie une brosse d'image qui est appliquée à l'objet Rectangle rec_bg. Cependant, ce code ne peut pas trouver l'image spécifiée.

Est-ce que quelqu'un qui sait comment résoudre ce problème? Merci.

Répondre

3

Cela dépend de la façon dont vous avez intégré l'image. Je suppose que vous l'avez défini comme "Contenu" de sorte qu'il n'est pas incorporé dans la DLL mais intègre dans le XAP. Dans ce cas, vous accédez simplement par rapport à la racine du projet, de sorte que vous utilisez:

« images/montagne ... »

(Note, vous ne pas utiliser le ./ devant vous, vous êtes automatiquement par rapport à la racine de l'application). Si vous l'avez défini en tant que ressource incorporée, vous devrez l'extraire de la DLL en utilisant un flux - je ne le recommande pas.

Petite histoire ennuyeuse: essayez de supprimer le fichier ./ et assurez-vous que les propriétés de l'image l'ont comme contenu.