未分類

C# EXE に埋め込んだビットマップリソースを利用する (2)

準備

1. C:\Windows\Web\Wallpaper\Theme2\img8.jpgファイルをソリューションエクスプローラー内のプロジェクトツリーにドラッグ & ドロップします。
2. ソリューションエクスプローラーで、この img8.jpg を選択して、プロパティのビルドアクションを「埋め込まれたリソース」に変更します。

デザイン

1. フォーム (Form1) にボタン (button1) を配置します。

サンプルコード (C#)

// 名前空間の追加
using System.Reflection;
using System.IO;

// コード
private void button1_Click(object sender, EventArgs e)
{
  Assembly assm = Assembly.GetEntryAssembly();
  Stream stream = assm.GetManifestResourceStream("WindowsFormsApplication1.img8.jpg");
  this.BackgroundImage = Image.FromStream(stream);
}

解説

ビットマップファイルの内容がフォームのバックグラウンドに表示されます。

このサンプルでは、まずアセンブリ情報全体を取得しています。そのアセンブリ情報の中から、ビットマップファイルをストリーム経由で抽出します。ちなみに、このビットマップファイルのフルネームは名前空間 + "." + ビットマップファイル名となります。

最後にストリームをビットマップに変換して、フォームのバッググラウンドに設定します。

一応、EXE だけを別の場所にコピーしたところ、同じ結果になりました。これにより、ビットマップファイルが EXE に埋め込まれていることが確認できました。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)

-未分類