在C#中从相对路径的文件中加载图片框图像

我在Windows窗体解决方案中有一个picturebox图像。 用户从数据库中选择一个项目后,我想将图像加载到此图片框中。 图像的文件名将来自数据库,所有图像必须存储在应用程序文件夹(\ Images)的子文件夹中。 我不想在我的解决方案中包含所有这些(2000-3000图像),此外,随着数据库的增长,用户将添加更多图像。 另外,我不想编写绝对路径。 所以这不是我想要的:

pictureBox.Image = Image.FromFile(@"C:\Program Files\Application\Images\" + dbase.filename); 

我想编写图像文件夹的相对路径,因此无论应用程序将安装在何处,都可以从此特定子文件夹加载图像。 我尝试过这样的事情,使用名为“test.jpg”的临时测试图像:

 pictureBox.Image = Image.FromFile(@"Images\test.jpg"); pictureBox.Image = Image.FromFile(@"..\Images\test.jpg"); pictureBox.Image = Image.FromFile(@"|DataDirectory|\Images\test.jpg"); 

但这些都行不通。 我只能用绝对路径来工作,比如“C:\ Images \ test.jpg”。 我该怎么办?

你试过PictureBox.Load方法吗?

如果url参数指示本地文件,则推荐的格式是本地文件路径。 例如,名为myPicture.jpglocated atc:\的图像文件将通过传递c:\ myPicture.jpg来访问url参数。 可以使用完整路径,例如http://www.contoso.com/path/images/image.jpg , 或相对路径,例如./images/image.jpg。 如果使用相对路径,则将其视为相对于工作目录。 对Load方法的调用将ImageLocation属性设置为url的值。

我会使用reflection来获取执行目录,例如:

 string ImagesDirectory = Path.Combine( Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Images" ); 

将图像加载到picturbox的最佳方法是从项目资源文件夹中加载所需的图像。

为此,请执行以下操作:

  1. 将所需图像添加到资源文件夹。
  2. 从资源文件夹将图像加载到picturebox。

    Form1.pictureBox1.Image = yourProject.Properties.Resources.YourImage;

注意:图像类型不是必需的[.bmp,.jpg等]