画像リソースの扱い方
昨日メモしたリソースの扱い方(id:siokoshou:20050204)がなかなか複雑だったので、まとめメモ。
1.外部画像ファイル:
pictureBox1.Image = new Bitmap( "neko.jpg" );
2.マニフェストリソース: アセンブリに埋め込まれた画像ファイル(bmp,jpgなど)
2-1.まず画像ファイルをアセンブリに埋め込む
画像ファイルをソリューションエクスプローラでプロジェクトに追加し、ファイルのプロパティのビルドアクションを「埋め込まれたリソース」に変更する。
2-2.読み込み方
testというアセンブリで、neko.jpgを表示する例
Stream stream = this.GetType().Assembly.GetManifestResourceStream( "test.neko.jpg" ); pictureBox2.Image = new Bitmap( stream );
testというアセンブリのresフォルダにあるneko2.jpgを表示する例
// フォルダも含めて指定が必要 pictureBox2.Image = new Bitmap( GetType().Assembly.GetManifestResourceStream( "test.res.neko2.jpg" ) );
(埋め込みリソースの説明は省略。マニフェストリソースに比べてメリットが分からないので。VS.NET2003だとSDKのサンプルを使ってリソースを作る必要があるのが面倒。2005は改善されるらしい。)
しかし、リソースの取り扱い方がなんか変ですね。
例のリソースを表す文字列を正しいものにするのに、長時間はまりました(>_<)。
ところで、「this.GetType().Assembly」の部分はちょっと自信なし。@ITの「Assembly.GetExecutingAssembly()」のほうがいいのかな?