我正在使用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对象的图像画笔。 但是,此代码无法找到指定的图像。
有谁知道如何解决这个问题? 感谢。
答案 0 :(得分:3)
这取决于您如何嵌入图像。我假设您将其设置为“内容”,因此它不是嵌入在DLL中,而是嵌入在XAP中。在这种情况下,您只需相对于项目根访问它,因此您将使用:
“images / mountain ......”
(注意,你不要在它前面使用./,你自动相对于应用程序的根目录)。如果将它设置为嵌入式资源,则需要使用流将其从DLL中提取出来 - 我不建议这样做。
短篇小说无聊:尝试删除前导./并确保Image的属性将其作为内容。