在Windows Forms中使用相对路径从代码加载图像

6

我的应用程序中有一个Image,而且我在WinForms中也有一张图片。

public static string Correct_Icons = @"C:\Users\xyz\Documents\Visual Studio 2008\Projects\FileShareMgmt\FileShareMgmt\Resources\Correct.png";
public static string warning_Icon = @"C:\Users\xyz\Documents\Visual Studio 2008\Projects\FileShareMgmt\FileShareMgmt\Resources\Warning.png";


cell.Value = Image.FromFile("Resources/warning_Icon);

但我只想使用相对路径而不是像上面那样的完整路径。

例如,像这样:

public static string Correct_Icons  = "\Resources\Correct.png";

并且还有其他内容……/……不起作用。有什么建议吗?


2
为什么不将图标嵌入您的程序集中? - Jon Skeet
1
请检查此链接:https://dev59.com/wlbTa4cB1Zd3GeqP7RBW - Rahul
我同意Jon的观点。你应该嵌入图片,特别是图标。唯一不这样做的原因是如果你想动态修改图片。 - Icemanind
我现在处于测试阶段,所以我不太想放置图片或者删除它们,但是最终我可能会这样做。谢谢。 - user175084
2个回答

23

对于我的程序来说,Path.GetDirectoryName (Assembly.GetExecutingAssembly().Location) 返回C:\code\test\Junk\bin\Debug

cell.Value = Image.FromFile(
  Path.Combine (
     Path.GetDirectoryName (Assembly.GetExecutingAssembly().Location),
     "Resources/warning_Icon"));

当然,通常情况下,您会将资源嵌入到您的程序集中,除非您想在不重新编译的情况下更改这些资源。


2

My issue was solved after this solution:

string[] s = { "\\bin" };
string path = Application.StartupPath.Split(s, StringSplitOptions.None)[0] + "\\Images\\On24.png";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接