我想使用图片smile.jpg
。我已将 jpg 文件保存到位置 ../project / Cam / bin / Debug / smile.jpg (路径的这一部分是静态的)
但是之前的路径是动态的,任何人都可以给我一个想法吗?
答案 0 :(得分:4)
不清楚哪条路径是哪条,但尝试用
“玩”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 :(得分:1)
您想从相对路径获取完整路径吗?
如果是,您可以使用System.IO.Path.GetFullPath()
e.g。
string fullPath = System.IO.Path.GetFullPath("../project/Cam/bin/Debug/smile.jpg");
答案 2 :(得分:1)
有几种解决方案可以解决加载应用程序附带的图像的基本问题:
解决方案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
或bin/release
中会有一个文件夹“images”。在这种情况下,您可以安全地假设以下代码将起作用:
string assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string imagePath = Path.Combine(assemblyPath, "images");
string smileyPath = Path.Combine(imagePath, "smiley.png");