画像をリソースとしてプロジェクトに取り込み、表示する

以前作ったテストパターン表示ソフトの最適化、リファクタリングを始めた。
最初に作ったときには、時間優先で幾何学的な表示パターンを全てその場で計算して描いていたのだが、これだと描画に時間が掛かる。
周期的なパターンについては、事前にリソースとして作成して、実行ファイルに取り込んでおいた方が描画が早い。

画像を作成する

フォーマットは何でも良い(BMP, JPG, PNG)。

画像をプロジェクトに取り込む

"Solution Explorer"で現在のプロジェクトを右クリックし、"Add" -> "Existing Item"と選択する。
ファイル選択ダイアログが開くので、フィルターを"Image Files"にして、作成した画像を選択する。
"Solution Explorer"で取り込んだファイルを右クリックして"Properties"を選択する。
"Properties" -> "Build Action"を"Embedded Resource"にする。
これで取り込んだファイルがリソースとして、appのバイナリーに組み込まれる。

取り込んだ画像を使用する


Assembly assemblyForm1 = Assembly.GetExecutingAssembly();
Stream strImageLoadBuffer;
string ResourceImageName;
ResourceImageName = ResourceImagePath + ImageName;
strImageLoadBuffer = assemblyForm1.GetManifestResourceStream(ResourceImageName);
Bitmap bmpImageFromResource = new Bitmap(strImageLoadBuffer);
"ImageName"は取り込んだ画像の名前(拡張子付)そのままである(例えば"TestImage.png")。
ResourceImagePathは"(プロジェクトのname space).("Solution Explorer"でのパス)."である。
画像を何もせずに取り込めば、"Solution Explorer"のルートに入るはずなので、"Solution Explorer"でのパスは不要である。
もし"Solution Explorer"でフォルダーを作成して(例えば"Resources")その中に格納した場合には、"(プロジェクトのname space).Resources"とする必要がある。
なのでフルパスは"TestAhoCS.Resources.TestImage.png"のようになる。