0

ロケーションに画像があります

C:\Users\ali\Desktop\Folder\bin\Customer\latest\data\help\pic.png";

この画像を次の場所にあるファイルで使用したい

C:\Users\ali\Desktop\Folder\Tab\User\Configuration\file.cs";

file.cs で pic.png の絶対パスを使用すると、画像にアクセスできます。しかし、file.csで画像の相対パスを使用したいです。

pic.pngからfile.cs への相対パスを計算するにはどうすればよいですか

ps:私はすでにリンクstackoverflow.com/questions/9065089/calculate-relative-filepathを見てきました

それは私のために働いていません。誰かが質問に答えることができれば本当に素晴らしいだろう

4

4 に答える 4

0

このようなもの?

"..\..\..\bin\Customer\latest\data\help\pic.png"
于 2013-05-09T09:00:28.910 に答える
0

最初にパスの同じ部分を削除します。

bin\Customer\latest\data\help\pic.png

現在のパスで同じことを行うと、3 つのレベルが残るTab\User\Configurationため、パスが合流するポイントに到達するには、3 つのレベルを下る必要があります。

..\..\..\bin\Customer\latest\data\help\pic.png
于 2013-05-09T09:00:31.433 に答える
0

これは不可能です。コードがコンパイルされると (それを実行するためにコンパイルする必要があります)、.csファイルの概念はありません。それらに含まれるすべてのコードは、実行可能ファイルにコンパイルされます。ファイルは分離されておらず、実行可能ファイルは.cs、コンパイル時にファイルがディスク上のどこに格納されていたかを知りません。

相対パスは、実行可能ファイルの作業ディレクトリに対して相対的に機能します。デフォルトでは、コンパイルされた実行可能ファイルはbinフォルダーに配置され、この場所を作業ディレクトリとして使用してデバッガーによって実行されるため、pic.pngファイルもそこにある必要があります。

これを自動的に行うには、pic.pngファイルをプロジェクトに追加し、「出力ディレクトリにコピー」プロパティを「true」に設定します。これにより、コンパイラはイメージ ファイルをコンパイル済みの実行可能ファイルと同じディレクトリに自動的にコピーします。次に、次のように、アプリケーションのディレクトリへの相対パスを使用できます。

string loadPath = Path.Combine(Path.Combine(typeof(MyClass).Assembly, "pic.png");

さらに良いことに、画像をリソースとしてプロジェクトに直接埋め込むと、別の画像ファイルを配布したり、脆弱なパスをいじったりする必要がなくなります。

于 2013-05-09T09:03:20.767 に答える