无法通过在Silverlight中提供相对路径来查找图像

时间:2010-07-28 18:03:26

标签: silverlight xaml imagebrush

我正在使用Silverlight应用程序,我很难在应用程序中设置图像的相对路径。

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

MyProject的    L图像         L mountain1.jpg    L SpriteObjects         L MountainFactory.cs    L GameScreen.xaml

最初,我使用GameScreen.xaml中的图像画笔绘制了一个Rectangle。

<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代码可以正常工作,即可以在images文件夹中找到图像而没有任何问题。

我想动态更改图像,并创建了一个名为MountainFactory.cs的类。在这个类中,我有一个使用此代码的方法:

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

此方法将返回应用于rec_bg Rectangle对象的图像画笔。 但是,此代码无法找到指定的图像。

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

1 个答案:

答案 0 :(得分:3)

这取决于您如何嵌入图像。我假设您将其设置为“内容”,因此它不是嵌入在DLL中,而是嵌入在XAP中。在这种情况下,您只需相对于项目根访问它,因此您将使用:

“images / mountain ......”

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

短篇小说无聊:尝试删除前导./并确保Image的属性将其作为内容。