首页 > 解决方案 > 如何使用 Image.FromFile 在 Visual Studio C# Windows 窗体中设置图像

问题描述

所以我正在尝试为我制作的表单应用程序设置自定义图像。我试图定位的图像位于与我的解决方案文件处于同一级别的名为“图像”的文件夹中。解决方案文件是一个 C# windows forms(net core framework)解决方案。这是一个基本的表单应用程序,我想根据用户选择显示图像,但是现在我每次尝试使用以下代码设置图像时都会遇到未处理的异常:

picFood.Image = Image.FromFile("../../Images/burger.jpg");

确切的错误是“System.IO.FileNotFoundException:../../Images/burger.jpg”

在另一个完全不相关的解决方案中,这是可行的。文件夹结构相同。一个名为 Images 的文件夹与 .sln 文件位于同一目录级别,其中保存了图像。它们在我的解决方案资源管理器和所有内容中。我已经用一个“../”尝试过这个,而没有“../”,所以我不知道从这里做什么。

标签: c#imagevisual-studio

解决方案


具有相对路径的文件相对于应用程序的工作目录打开。

在这种情况下,从 Visual Studio 中启动时,默认设置是默认bin放置已编译应用程序的文件夹。

因此,如果您的二进制文件位于<project dir>/bin/Debug/App.exe此路径中,则将解析为<project dir>/Image/burger.jpg.
如果您更改了构建配置中的某些内容,或者您​​的应用程序在运行时切换了目录(例如 via Directory.SetCurrentDirectory),则此路径可能与您预期的不同。

要了解您的问题,我建议您开始查看您的工作目录是什么。您可以通过在您的代码中获得它Directory.GetCurrentDirectory()
您还可以使用Path.GetFullPath.
打印这两个值以查看您的程序尝试从何处加载文件。

请记住,如果您想使用它们,您放在解决方案/项目文件夹中的任何图像文件都需要与您的二进制文件一起复制。
要使用相对路径而不..可以在编译期间将它们与二进制文件一起复制,请参阅: VS2010 How to include files in project, to copy them to build output directory automatically during build or publish and Copying Visual Studio project file(s) to output directory during构建如何做到这一点。


推荐阅读