-3

画像 を 使い たいsmile.jpg. jpgファイルを場所../project/Cam/bin/Debug/smile.jpgに保存しました (パスのこの部分は静的です)

しかし、前のパスは動的です。誰かアイデアを教えてもらえますか?

4

3 に答える 3

4

どのパスがどれであるかはあまり明確ではありませんが、「遊んで」みてください

Assembly.GetExecutingAssemblyおよびPath.GetDirectoryName

//THIS RETURNS YOU A FOLDER WHERE YOUR APPLICATION RUNS
var exeutingFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

//COMBINE EXECUTING FOLDER WITH RELATIVE PATH YOU HAVE
var resultinPath = Path.Combine(executingFolder, YOUR_PATH);
于 2013-03-20T09:44:18.437 に答える
2

アプリケーションに同梱されているイメージをロードする際の根本的な問題には、いくつかの解決策があります。

解決策 1: リソース
イメージ ファイルが存在する必要がない場合は、イメージをプログラムのリソースに追加して、デザイナーで割り当てることができます。その後、イメージ ファイルを展開する必要はありません。

これを行うには、画像ファイルをプロジェクトに追加し、それをプロジェクト プロパティの [リソース] タブにドラッグします。

解決策 2: ファイルを出力フォルダーにコピーする
画像を出力フォルダーに置き、実行時にファイルから読み込む場合があります。次に、フォルダーに関する仮定を実際に避ける必要がありますが、代わりに次のことを行います。

  1. イメージ ファイルをプロジェクトに追加し、それらのビルド タイプを「なし」に設定して、常に出力フォルダーにコピーするようにします。/bin/debugプロジェクトをビルドすると、イメージ ファイルはまたはにあるはず/bin/releaseです。
  2. コードで、アセンブリ フォルダーを使用してファイルへのパスを作成します。

このコードは、アセンブリ フォルダーを取得し、パス名を「smiley.png」という名前の画像にアセンブルします。

string assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string smileyPath = Path.Combine(assemblyPath, "smiley.png");

プロジェクト内のフォルダーに画像を追加した場合、そのフォルダーは出力フォルダーにも作成されます。たとえば、画像を「images」フォルダに入れると、bin/debugまたはに「images」フォルダが作成されますbin/release。その場合、次のコードが機能すると安全に仮定できます。

string assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string imagePath = Path.Combine(assemblyPath, "images");
string smileyPath = Path.Combine(imagePath, "smiley.png");
于 2013-03-20T09:59:36.007 に答える
1

相対パスからフルパスを取得しますか?

その場合は、System.IO.Path.GetFullPath()を使用できます

例えば

string fullPath = System.IO.Path.GetFullPath("../project/Cam/bin/Debug/smile.jpg");

于 2013-03-20T09:44:10.627 に答える