2012-08-02 65 views
1

在Silverlight應用程序,我有一個的BitmapImage定義爲System.Windows.Media.Imaging.BitmapImage和它作爲一個調用的方法「SetSource」我在哪裏可以設置這樣的源:加載WPF中的BitmapImage的來源?

BitmapImage bitmap = new BitmapImage(); 
System.IO.Stream stream = _scene.GetStream(); 
if (stream == null) return; 
bitmap.SetSource(stream); 

在WPF應用程序我也有一個 位圖圖像定義爲System.Windows.Media.Imaging.BitmapImage,但沒有SetSource方法。我如何在Silverlight應用程序中設置WPF應用程序中的源代碼?

此外,它是一個流,而不是一個字符串。它不是一個URI。所以「UriSource」方法不起作用。我試過這個:

 System.IO.Stream stream = _scene.GetStream(); 
     if (stream == null) return; 
     BitmapImage bitmap = new BitmapImage(); 

     bitmap.UriSource = new Uri(stream.ToString()); 

而在運行時,它拋出一個錯誤,無法確定URI。該URI是Intranet的標識符嗎?你確定這不是銀光的事嗎?我做一個WPF應用程序

回答

8

你必須設置BitmapImage.StreamSource屬性:

BitmapImage bitmap = new BitmapImage(); 
bitmap.BeginInit(); 
bitmap.StreamSource = _scene.GetStream(); 
bitmap.EndInit(); 

如果您想要在創建位圖後立即關閉流,您也可以h可以設置BitmapCacheOption.OnLoad選項:

using (Stream stream = _scene.GetStream()) 
{ 
    bitmap.BeginInit(); 
    bitmap.CacheOption = BitmapCacheOption.OnLoad; 
    bitmap.StreamSource = stream; 
    bitmap.EndInit(); 
}