6

ファイルをロックせずに画像(.jpg)を開いたり表示したりしたい。基本的に私は、ユーザーが画像を上書きする画像を選択できるようにするプログラムを持っています。しかし、問題は、上書きされている画像を表示することです。では、ロックせずに画像を読み込むにはどうすればよいですか?

これは私が今画像を設定しなければならないコードです

Image1.Source = new BitmapImage( new Uri( myFilePath ) ) ); 

myFilePathは、「C:\ Users * \ MyPictures\Sample.jpg」のような文字列と同じです。

4

3 に答える 3

11

myBitmap.CacheOption = BitmapCacheOption.OnLoadあなたが探しているラインです。「ロード時に画像全体をメモリにキャッシュします。画像データのすべての要求はメモリストアから満たされます。」MSDNから

このようなもの:

BitmapImage bmi = new BitmapImage();
bmi.BeginInit();
bmi.UriSource = new Uri(myFilePath);
bmi.CacheOption = BitmapCacheOption.OnLoad;
bmi.EndInit();
Image1.Source = bmi;
于 2012-01-31T23:20:20.603 に答える
1

StreamSourceはあなたが探しているプロパティだと思います。画像をMemoryStreamに読み込んでから、MemoryStreamをBitmapImageのStreamSourceの値として設定します。

var memStream = new MemoryStream(File.ReadAllBytes(myFilePath));
Image1.Source = new BitmapImage() { StreamSource = memStream };

編集:私はこのコードを試しましたが、ソースの設定に関してBitmapImage.BeginInitとBitmapImage.EndInitを呼び出す必要があるようです:

var memStream = new MemoryStream(File.ReadAllBytes(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"));
var img = new BitmapImage();
img.BeginInit();
img.StreamSource = memStream;
img.EndInit();
myImage.Source = img;
于 2012-01-31T23:16:38.597 に答える
0

ファイルを開くときに、ファイルの共有を選択して、別のプログラムがそのファイルを必要とする場合の動作を定義することもできます。

(msdnから:http://msdn.microsoft.com/en-us/library/y973b725.aspx

File.Openメソッド(String、FileMode、FileAccess、** FileShare **

パラメータ
path
タイプ:System.String
開くファイル。

mode
タイプ:System.IO.FileMode
ファイルが存在しない場合にファイルを作成するかどうかを指定し、既存のファイルの内容を保持するか上書きするかを決定するFileMode値。

アクセス
タイプ:System.IO.FileAccess
ファイルに対して実行できる操作を指定するFileAccess値。

* シェア
*タイプ:System.IO.FileShare *
他のスレッドがファイルに対して持つアクセスのタイプを指定するFileShare値。

于 2012-01-31T23:25:16.190 に答える