2

Silverlightアプリでは、BitmapImageをSystem.Windows.Media.Imaging.BitmapImage「」と呼ばれるメソッドとして定義し、次SetSourceのようにソースを設定できます。

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はイントラネットの識別子ですか?これがSilverlightのものではないことを確認しますか?WPFアプリケーションを実行しています

4

2 に答える 2

11

BitmapImage.StreamSourceプロパティを設定する必要があります。

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

ビットマップを作成した直後にストリームを閉じたい場合は、次のBitmapCacheOption.OnLoadオプションも設定する必要があります。

using (Stream stream = _scene.GetStream())
{
    bitmap.BeginInit();
    bitmap.CacheOption = BitmapCacheOption.OnLoad;
    bitmap.StreamSource = stream;
    bitmap.EndInit();
}
于 2012-08-06T14:39:29.623 に答える
2

コンストラクターを使用してUriSourceを指定できます

BitmapImage bmp = new BitmapImage(uriSource: new Uri());

または、 BitmapImage.StreamSourceプロパティを使用して StreamSource を設定できます。

于 2012-08-02T04:51:58.010 に答える