我想使用图像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
or中/bin/release
。此代码获取程序集文件夹并将路径名组装到名为“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");
你想从相对路径中获取完整路径吗?
如果是这样,您可以使用System.IO.Path.GetFullPath()
例如
string fullPath = System.IO.Path.GetFullPath("../project/Cam/bin/Debug/smile.jpg");