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.pngfile.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

如果您在当前路径上执行相同操作,则剩下三个级别Tab\User\Configuration,因此您需要向下三个级别才能到达路径相交的点:

..\..\..\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 回答
0

你想要一个来自 file.cs 的相对路径吗?File.cs 只是一个代码文件。一个带有文本的文件,仅此而已。该文件无法访问图片。还是您在该文件中有代码并且该代码用于访问图片?

如果你,你不是在谈论从 file.cs 到你的图片的相对路径。您正在谈论从 EXE 文件到图像的相对路径。在这种情况下,您必须知道编译器在编译期间会将您的图像放置在哪里。

如果图像不是项目的一部分,而只是您计算机上某处的文件。我建议您在 app.config 中使用该图片的绝对路径进行配置设置。

于 2013-05-09T09:05:39.810 回答