だらだらやるよ。

こげつのIT技術メモ

プロジェクトに画像を埋め込む

必要になるたびにぐぐってる気がするのでメモ
アイコンファイルやシステムで利用する画像を埋め込む方法。

プロジェクトに追加しただけだと、exeと同じ場所にコピーされてしまうんですよね。これは不便!
ソリューションエクスプローラでプロジェクトに追加したファイルのプロパティを開き(今回はMy.icoというファイルを用意)、ビルドアクションを、埋め込まれたリソースに変更します。
で、利用する場合のコードは以下(タスクトレイのアイコンに設定しています。)
tasktrayIconはデザイナですでに追加済みのNotifyIconクラスです。

Assembly myAssembly = Assembly.GetExecutingAssembly().ManifestModule.Assembly;
using(Stream s = myAssembly.GetManifestResourceStream("MyNameSpace.My.ico")) {
	Icon ico = new Icon(s);
	tasktrayIcon.Icon = ico;
	tasktrayIcon.Visible = true;
	s.Close();
}

無事読み込めました。
僕はタスクトレイのアイコンに設定したり、外から読んだ画像と比較させたりして使用しています。