2010-07-28 112 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中提取出來 - 我不建議這樣做。

短故事無聊:嘗試刪除前導./並確保圖像的屬性將其作爲內容。