-3

我想使用图像smile.jpg。我已将jpg文件保存到位置../project/Cam/bin/Debug/smile.jpg (这部分路径是静态的)

但是以前的路径是动态的,谁能给我一个想法?

4

3 回答 3

4

不是很清楚哪条路是哪条路,但试着“玩”一下

Assembly.GetExecutingAssemblyPath.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/debugor中/bin/release
  2. 在您的代码中,使用程序集文件夹构建文件的路径

此代码获取程序集文件夹并将路径名组装到名为“smiley.png”的图像中:

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

如果您将图像添加到项目中的文件夹,该文件夹也将在输出文件夹中创建。bin/debug例如:如果您将图像放入文件夹“images”,则在or中会有一个文件夹“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 回答