- PR -

Form.BackgroundImageについて

1
投稿者投稿内容
tutida
会議室デビュー日: 2003/06/05
投稿数: 7
投稿日時: 2003-12-25 20:11
 最近C#をはじめたものです。

 GUIからはじめたのですが、分からない個所があり、投稿しました。

 VisualStudioで、FORMにイメージを貼り付けたところ、InitializeComponent()で、

  this.BackgroundImage = ((System.Drawing.Bitmap)(resources.GetObject("$this.BackgroundImage")));

 と、書き込まれました。

 GetObjectの引数が、パスなどでなく文字列になっているのです。

 この場合、この文字列からどのようにイメージファイルのありかにたどり着くのか分かりません。

 ご存知の方、どうかご教授ください。

 
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-12-26 12:34
resourcesのあたりから何が行われているか探していくと
わかるかもしれない。

#へー、リソースに埋め込むんだ。。。
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2003-12-27 17:29
別段困ることもなかったのでVSがどのようにリソースに埋め込むか知らなかったんですけど、少し調べてみました。
こういう動作をしているみたいです。

1.[ソースコード名].resxを作成する。
2.resxファイルに埋め込む。
3.コンパイル時にアセンブリに埋め込む。

あくまで推測ですけど。
埋め込んだコンポーネントの記述されているソースコードのフォルダにソース名と同じで拡張子がresxになっているファイルがあるので、それをVSで開いてみてください(ただのXMLファイルです)。バイナリのデータがBASE64エンコードされて突っ込まれてます。
つまり「実行するときにイメージを探し出して読み込む」わけではありません。

resxファイル、Resourceファイル、この辺がわからなければヘルプに詳しいことは書いてあるので参照してください。
tutida
会議室デビュー日: 2003/06/05
投稿数: 7
投稿日時: 2003-12-27 22:09
 小野@EACさん、vaさん、レス有難う御座います。

 私も、昨日いろいろたどってみて、resxファイルの中<data>要素の中に記述があるのを見つ

けました。

 お二人のご指摘にもあるように、私も<value>のなかでイメージファイルの中身を記述し、埋

め込んでいるのかとおもったのですが、プロジェクトのディレクトリからファイルを削除してみ

ると、イメージが描画されませんでした。

 ということは、<value>の中身をデコードしても元に復元できない?

 実験結果が出たらお知らせいたします。
1

スキルアップ/キャリアアップ(JOB@IT)