画像 を 使い たいsmile.jpg
. jpgファイルを場所../project/Cam/bin/Debug/smile.jpgに保存しました (パスのこの部分は静的です)
しかし、前のパスは動的です。誰かアイデアを教えてもらえますか?
どのパスがどれであるかはあまり明確ではありませんが、「遊んで」みてください
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);
アプリケーションに同梱されているイメージをロードする際の根本的な問題には、いくつかの解決策があります。
解決策 1: リソース
イメージ ファイルが存在する必要がない場合は、イメージをプログラムのリソースに追加して、デザイナーで割り当てることができます。その後、イメージ ファイルを展開する必要はありません。
これを行うには、画像ファイルをプロジェクトに追加し、それをプロジェクト プロパティの [リソース] タブにドラッグします。
解決策 2: ファイルを出力フォルダーにコピーする
画像を出力フォルダーに置き、実行時にファイルから読み込む場合があります。次に、フォルダーに関する仮定を実際に避ける必要がありますが、代わりに次のことを行います。
/bin/debug
プロジェクトをビルドすると、イメージ ファイルはまたはにあるはず/bin/release
です。このコードは、アセンブリ フォルダーを取得し、パス名を「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");
相対パスからフルパスを取得しますか?
その場合は、System.IO.Path.GetFullPath()を使用できます
例えば
string fullPath = System.IO.Path.GetFullPath("../project/Cam/bin/Debug/smile.jpg");