1

ImageSource を BitmapImage に変換しようとして、この回答に取り組んでいます。ソースがビットマップである WPF キャンバスに Image コントロールがあり、このコントロールのソース プロパティを変数 (ImageSource になります) に抽出し、これを BitmapImage としてキャストします。

私のコードは以下の通りです:

ImageSource source = MyImage.Source;
BitmapImage image = (BitmapImage) source;

これは基本的にリンクされた回答と同じコードですが、2行目(キャストしようとしている場所)で次のランタイムエラーが発生しています:

タイプ 'System.Windows.Media.Imaging.BitmapFrameDecode' のオブジェクトをタイプ 'System.Windows.Media.Imaging.BitmapImage' にキャストできません。

私が推測する論理的な答えは、これは単に実行できないということですが、リンクされた答えは受け入れられ、好意的なコメントとイライラする4つの賛成票があります。.Net 4.5 で Visual Studio 2012 を使用しています。4.0、3.5、および 3.0 に対してコンパイルしようとしましたが、同じ問題が発生しています。

ここでAshuraの提案も試してみましたが、結果は単純に null です (結果の変数の値を null にキャストする代わりにasキーワードを使用するときのように)。

XAML では、Image コントロールのソース プロパティは*.bmpファイルです。最終的にこれを WriteableBitmap に取得しようとしていますが、BitmapImage を WriteableBitmap のコンストラクターに渡す必要があります。

だから私の質問は、私は何が間違っているのですか? ImageSource から BitmapImage に変換するにはどうすればよいですか?

4

1 に答える 1

1

コメント投稿者に感謝します、あなたは私が問題を理解するのを手伝ってくれました。

XAMLからSourceプロパティを取得し、 Window Loadedイベントで以下を設定して、画像コントロールのSourceプロパティが実際にBitmapImageであることを確認しました。

private void Window_Loaded_1(object sender, RoutedEventArgs e)
{
    var image = new BitmapImage(new Uri("sample.bmp", UriKind.Relative));
    MyImage.Source = image;
}

代わりにXAMLでこれを行うと、SourceプロパティはデフォルトでBitmapFrameDecodeオブジェクトになります。

于 2012-12-19T11:07:40.090 に答える