【问题标题】:Use a relative path for images in windows form application在 Windows 窗体应用程序中使用图像的相对路径
【发布时间】:2013-10-26 05:27:37
【问题描述】:

我已经搜索了我的问题的答案并尝试了许多解决方案但无法解决它

我有一个 Windows 窗体应用程序,我必须在图片框中动态设置图像,我已经使用以下代码成功地做到了这一点

    pictureBox2.Image = Image.FromFile("C:/Users/user/Documents/College Work/4th Year/Advanced Net/Projects/Game/Resources/" + Quiz1FromFile.Q1Ans + ".jpg"););

如何修改上述路径,以便在我移动项目位置时它可以工作。 “游戏”是windows窗体项目的名称

【问题讨论】:

  • 看下面两个答案。两者都是有效的。但这取决于你想做什么。您是否希望您的应用程序始终查看特定的相对路径,或者您希望拥有任意路径?如果是任意路径,添加app.config文件并使用设置。如果您想要静态相对路径,请使用 Environment.CurrentDirectory 并从那里开始。所以如果你的图片总是在你的 bin\images 你需要写Image.FromFile(Path.combine(Environment.CurrentDirectory, "images", "image1.jpeg"))
  • 我同意@T.S.因为对于桌面应用程序,您无法控制它的启动方式(工作目录),因此使用相对路径是不安全的(如果工作目录不是您所期望的,则会中断)。使用绝对路径更安全。

标签: c# winforms


【解决方案1】:

最好的方法是在项目属性的设置选项卡中add an ApplicationSettings
调用此属性,例如"ImagePath",并将此属性设置为您的默认开发路径。

完成此操作后,您的 app.config 文件中将有一个条目(编译时变为 YourApplicationName.exe.Config),其中包含默认路径的值。

<applicationSettings>
    <YourAppNamespace.Properties.Settings>
        <setting name="ImagePath" serializeAs="String">
            <value>C:/Users/user/Documents/College Work/4th ......</value>
        </setting>
    <(YourAppNamespace.Properties.Settings>
</applicationSettings>

此文件将与您的应用程序一起分发,您可以使用部署过程更改该路径。

在代码中,您可以引用存储在配置文件中的路径

string imagePath = Properties.Settings.Default.ImagePath;
pictureBox2.Image = Image.FromFile(Path.Combine(imagePath, Quiz1FromFile.Q1Ans,  ".jpg"));

通过这种方式,您无需在应用程序内对图像文件夹的路径进行硬编码,也无需处理相对路径。您只需在目标机器上将此值设置为图像文件的存储空间。

【讨论】:

    【解决方案2】:

    你需要做两件事。 首先,文件名应该是与可执行文件所在位置相关的相对路径。 第二件事是您需要确保图像确实存在。 您可以使用构建后事件将图像复制到 DestinationFolder 路径。

    看看here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 2010-10-11
      • 1970-01-01
      相关资源
      最近更新 更多