2012-03-05 5 views
0

私は銀色のイメージコントロールで画像を表示するのに苦労しています。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 = new Uri("C:/Briefcase/PDF.bmp", UriKind.Relative); 

おそらく私のローカルドライブにアクセスできないシルバーと関係がありますか?もしそうなら、コントロールに画像を動的にロードする方法は?

多くのありがとうございます。

ニール

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を実行するようにアプリケーションを設定した場合(実際にはOOBを必要としないSL5でもそうだと思いますが)、それは良い解決策になるかもしれませんあなたのアプリケーションのために。

アイコンを使用してアプリケーションで配布しようとしている場合は、必ずリソースとしてプロジェクトに追加する必要があります。

+0

私がしようとしているのは、sqlのイメージを読んでロゴとして表示することです。データベースから画像を取得することはできますが、それを表示する最も簡単な方法は何ですか?私はそれをMemoryStreamから直接行うことはできますか?そうでない場合は、プログラムとしてリソースとして追加できますか? – Neill

+0

回答が更新されました - ありがとうございます – Neill

1

ために画像をロードすることによって、私の問題を解決セキュリティ上の理由から、Silverlightでは、隔離ストレージの外にあるユーザーのローカルマシン上のファイルにアクセスすることはできません。また、ファイルの保存/保存ダイアログを使用することもできません。

昇格した信頼Silverlight 4アプリケーションを使用すると、マイドキュメント、マイピクチャ、マイビデオ、およびマイミュージックフォルダに直接アクセスできます。アプリケーションをSL4で完全に信頼できるようにするには、ブラウザの外にある必要があります。これは、あなたの望むことですか? (SL 5はブラウザからフルファイルシステムへのアクセスを許可しており、ブラウザ内の昇格されたアクセス許可も利用可能ですが、レジストリの変更が必要です)。

+0

申し訳ありませんが、正しい答えを1つだけマークすることができます – Neill

+0

問題ありません。将来的には、質問を編集する代わりに自分の質問に答えることもできます。 – foson

関連する問題