現在、Windows フォームで作った画面を WPF 化しているのですが、
WPF の Image コントロールにリソース画像を使う
必要が出てきたのでメモしておきます。
基本
・WPF は、System.Windows.Media.BitmapSource型
・リソース登録されているオブジェクトは System.Drawing.Bitmap型
結論
そのままでは使用できない
しかし、Image コントロールは次のようにファイル名を直接してして書くこともできます。
<Image Souce="d:\HogeHoge.gif">
つまり、System.Drawing.Bitmap型から変換するよりも、ファイルベースで読み込むことの方が簡単な訳です。
・・・ということで、手順は次の通りです。
1.Resources フォルダから目的のイメージファイルを探す
2.目的のイメージファイルのプロパティを設定
3.Image コントロールの Souce プロパティで Resources フォルダのファイル名を指定
以下、詳細です。
1.Resources フォルダから目的のイメージファイルを探す
既に画像リソースが存在しているなら、プロジェクトの中に「Resources」フォルダが存在していると思います。
初めて作る時は、普通にリソースとして画像を登録すれば「Resources」フォルダが作成されます。
2.目的のイメージファイルのプロパティを設定
ビルドアクションプロパディを「Resource」
出力ディレクトリにコピーを「常にコピーする」
とします。
3.Image コントロールの Souce プロパティで Resources フォルダのファイル名を指定
カレントディレクトリ以下のパス名で指定します。
<Image Source="Resource\MainIcon.png" />
XAML にリソースとして記述する場合も上記と同様です。
1.XAML のリソースとして、イメージファイルを登録
Windowのリソースにする場合は、次のように書きます。
当然ですが Windows.Resources タグは、多用するので既存の場合は、その中に BitmapImage タグだけを含めます。
<Windows.Resources>
<BitmapImage x:Key="MainIcon" UriSource="Resources\MainIcon.png" />
</Windows.Resources>
2.Image コントロールの Souce プロパティで XAML のリソースを使用
上記のファイル名を直接指定する方法と同様に、リソース名を指定します。
<Image Source="{StaticResource MainIcon}" />
これはもう、イメージのリソースというよりはリソースの使い方の話になっちゃってますけど・・・