2012-03-05 31 views
0

我正在努力在Silverlight圖像控件中顯示圖片。Silverlight - 從本地硬盤上的文件顯示圖像控制中的PNG

該文件位於本地硬盤上。

是否可以將硬盤中的圖像加載到silverlight圖像控件中?

到目前爲止,我搜索的所有東西似乎都不涉及從硬盤加載。

我需要先將它保存爲資源嗎?

我目前在做這樣的事情:

Image pic = new Image(); 

Uri uri = new Uri(@"C:\Briefcase\PDF.bmp", UriKind.Relative); 

pic.Source = new System.Windows.Media.Imaging.BitmapImage(uri); 

canvas.Children.Add(pic); 
pic.SetValue(Canvas.LeftProperty, Convert.ToDouble(100)); 
pic.SetValue(Canvas.TopProperty, Convert.ToDouble(100)); 
pic.Height = 70; 
pic.Width = 600; 

是我的Uri是否正確?因爲我也嘗試過:

Uri uri = new Uri("C:/Briefcase/PDF.bmp", UriKind.Relative); 

這是否也許與silverlight無法訪問我的本地驅動器有關?如果是的話我會如何動態地將圖像加載到控件中?

非常感謝。

奧尼爾

UPDATE:

解決我的問題,直接從MemoryStream的圖像加載到圖像控制

byte[] logo = e.Result; 

logoStream = new System.IO.MemoryStream(logo); 

System.Windows.Media.Imaging.BitmapImage b = new System.Windows.Media.Imaging.BitmapImage(); 
b.SetSource(logoStream); 
ownerLogo.Source = b; 

問候

奧尼爾

回答

1

Silverlight在默認模式下限制您訪問一小部分位置。如果您將應用程序設置爲運行OOB並具有較高的可信度(實際上,我認爲使用SL5您甚至不需要OOB),您實際上可以訪問計算機上其他位置的文件,但這可能是也可能不是一個好的解決方案爲您的應用程序。

如果您只是想使用圖標並計劃將其與應用程序一起分發,那麼您應該將其作爲資源添加到項目中。

+0

我想要做的是從sql中讀取圖像並將其顯示爲標誌。我可以從數據庫中檢索圖像沒有問題,那麼顯示它的最簡單方法是什麼?我可以直接從MemoryStream中做到嗎?或者,如果沒有,我可以以編程方式將其添加爲資源? – Neill 2012-03-05 14:41:08

+0

查看更新的答案 - 謝謝你指着我在正確的方向 – Neill 2012-03-05 14:48:41

1

對於由於安全原因,Silverlight不允許您在獨立存儲之外的用戶本地機器上訪問文件,或通過文件打開/保存對話框(並且這些必須通過用戶啓動的操作)。

通過提升的信任Silverlight 4應用程序,您可以直接訪問我的文檔,我的圖片,我的視頻和我的音樂文件夾。要使SL4中的應用程序完全信任,它必須不在瀏覽器中。這是你想要的嗎? (SL 5允許從瀏覽器訪問完整的文件系統,並且具有可用的升級權限,但這需要註冊表更改。)

+0

對不起,我只能標記一個答案是正確的 – Neill 2012-03-05 14:51:05

+0

沒問題。爲了將來,您也可以回答自己的問題,而不是編輯問題。 – foson 2012-03-05 15:03:00

相關問題