2010-07-28 92 views
2

我正在使用Silverlight应用程序,而且我很难在应用程序中设置图像的相对路径。通过在Silverlight中提供相对路径找不到图像

这是我的项目目录的简单图片:

MyProject的 大号图片 大号mountain1.jpg 大号SpriteObjects 大号MountainFactory.cs 大号GameScreen.xaml

本来,我画一个矩形使用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> 

这个xaml代码的工作原理是,它可以找到图像文件夹中的图像没有任何问题。

我想动态地改变图像,并且我创建了一个名为MountainFactory.cs的类。在这个类中,我有这种码的方法:

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

此方法将返回其被施加到rec_bg Rectangle对象的图像的刷子。 但是,此代码无法找到指定的图像。

有谁知道如何解决这个问题? 谢谢。

回答

3

这取决于你如何嵌入图像。我假设你已经将它设置为“内容”,所以它没有嵌入到DLL中,但嵌入在XAP中。在这种情况下,你可以将它访问相对于项目的根,所以你会使用:

“图像/山......”

(请注意,你不./在前面的使用它,你自动相对于应用程序的根)。如果您将它设置为嵌入式资源,则需要使用流将其从DLL中提取出来 - 我不建议这样做。

短故事无聊:尝试删除前导./并确保图像的属性将其作为内容。