2

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

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

MyProject L images L mountain1.jpg L SpriteObjects L MountainFactory.cs L 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 代码有效,即它可以毫无问题地在 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 对象的图像画笔。但是,此代码找不到指定的图像。

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

4

1 回答 1

3

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

“图像/山……”

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

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

于 2010-07-28T21:26:47.480 回答