2013-02-26 10 views
7

私はいくつかのボタンの上で画像を使用しています。これらの画像を出力に含めたくありません。イメージビルドアクション:なしと組み込みリソースの違い?

これらのイメージはボタンのプロパティで設定されているため、Resource.resxファイルで定義されています。

ビルドアクションを組み込みリソースに設定するように言われましたが、なぜこれが違いになるのか不思議です。私はビルドアクションを "なし"に設定しており、ファイルはコピーされません。そして、私はどこにビルドされたアプリケーションを移動して起動することができ、すべての画像がうまく表示されます。 (明らかにするために、画像は起動時には絶対にプログラムのディレクトリにはなく、まだまだ表示されます)。

私は、MSDNでそれを見て、これだ:

なし - ファイルがプロジェクト出力グループに含まれていないと は、ビルドプロセスでコンパイルされていませんが。例は、Readmeファイルなどの のドキュメントを含むテキストファイルです。

埋め込みリソース - このファイルは、DLLまたは実行可能ファイルとしてメインプロジェクトのビルド出力に埋め込まれた です。通常、リソースファイルには が使用されます。

しかし、これはすべてで設定されているように聞こえますが、動作していてもいけません(でもそうです)。

埋め込みリソースにどのようなメリットがあるのでしょうか。私はそれを試しましたが、違いはありませんでした。誰かが何が起こっているのかを説明できることを望んでいた。

私は唯一の仮定は、ボタンを介して画像のプロパティを設定し、そのエントリがリソースファイルに追加されると、(たとえそれらが同じであっても)プロジェクトに追加されたファイルに決して接続しないということです。したがって、イメージプロパティをこのように設定する場合、イメージはプロジェクト(つまり、ソリューションエクスプローラ)に含めなくてもかまいません。

ありがとうございました!

答えて

8

画像を表示する2つの異なる方法が間違っているようです。

  1. あなたは、リソースファイルを使用する場合は、リソースファイル自体が画像を 含まれていますし、そのファイルが出力ディレクトリにコピーされます。 このリソースファイルから画像を参照すると、すべて となります。なし/埋め込み/コンテンツの実際の画像設定は、 ではありません。これにより、様々な 言語と場所のリソースファイルを作成し、 のアプリケーションカルチャに基づいてどの画像を使用するかを変更することができます。

  2. イメージを参照するもう1つの方法は、イメージを埋め込むことまたはプロジェクトにコンテンツとして設定することです。コンテンツとして設定すると は出力ディレクトリにコピーされ、場所に基づいて物理的に を参照することができます。または、埋め込んだ場合、ファイルは 内にあり、作成されたdll内にあり、 組み込み関数を使用してファイルを作成します。

あなたは、リソースファイルに入れた後ので、あなたは、リソースファイルが既にプロジェクト内にあるため、プロジェクトでそれを持っている必要はありません、それはどこのファイルは意志である方法#1を使用していますから来る。

+0

ありがとうございます。これは私が混乱していたものです。私の頭の中で、私がイメージソースを設定していたのは、プログラムが開始されたときのイメージのどこにマッピングされるのかということでした。私はそれがリソースファイルに追加されたときに何が起こったのか把握していませんでした。すべてが明確にされています。 – Wrightboy

関連する問題