25

我知道这个问题之前已经被问过(并回答过)。但是,没有一个解决方案对我有用。

以下是拼图所有相关部分的屏幕截图:

屏幕截图 http://dinosaur-island.com/PlantPictureBoxScreenCap.jpg

如您所见,有许多植物的位图作为资源加载到图像文件夹中。有一个带有名为“PlantPicture”的图片框的表单。有一个字符串,我知道它有一个很好的路径(因为我已经在调试器中检查过它):

            PicPath = PicPath+".bmp";

屏幕截图 http://dinosaur-island.com/PlantDebugger.jpg

我尝试了多种加载、铸造等方法。

4

5 回答 5

51

路径应该类似于:"Images\a.bmp". (注意缺少前导斜杠,斜杠是反斜杠。)

接着:

pictureBox1.Image = Image.FromFile(@"Images\a.bmp");

我只是试了一下以确保它有效。这是您得到的另一个答案 - “总是复制”。

于 2013-06-19T15:02:26.270 回答
17

好的...所以首先您需要将图像导入到您的项目中。

1)在表单设计视图中选择图片框

2)打开PictureBox任务
(它是印在PictureBox边缘的小箭头)

3) 点击“选择图片...”

4) 选择第二个选项“项目资源文件:”
(此选项将创建一个名为“资源”的文件夹,您可以使用 Properties.Resources 访问该文件夹)

5) 单击“导入...”并从您的计算机中选择您的图像
(现在图像的副本将保存在第 4 步创建的“资源”文件夹中)

6) 点击“确定”

现在图像在您的项目中,您可以将它与 Properties 命令一起使用。当您想更改 PictureBox 中的图片时,只需键入此代码:

pictureBox1.Image = Properties.Resources.MyImage;

注意:
MyImage 代表图片的名称...
输入“Properties.Resources.”后,显示所有导入的图片文件...

于 2015-03-20T21:56:50.817 回答
8

这取决于您的文件路径。对我来说,当前目录是[project]\bin\Debug,所以我不得不两次移动到父文件夹。

Image image = Image.FromFile(@"..\..\Pictures\"+text+".png");
this.pictureBox1.Image = image;

要查找当前目录,您可以创建一个名为 label2 的虚拟标签并编写以下代码:

this.label2.Text = System.IO.Directory.GetCurrentDirectory();
于 2016-08-07T05:14:36.113 回答
7

接受的答案有很大的缺点!
如果您以这种方式加载图像,您的 PictureBox 将锁定图像,因此如果您尝试对该图像执行任何后续操作,您将收到错误消息图像在另一个应用程序中使用!
本文在 VB 中显示解决方案

这是 C# 实现

 FileStream fs = new System.IO.FileStream(@"Images\a.bmp", FileMode.Open, FileAccess.Read);
  pictureBox1.Image = Image.FromStream(fs);
  fs.Close();
于 2015-07-08T06:55:25.790 回答
4

Setting "Copy to Output Directory" to "Copy always" or "Copy if newer" may help for you.

Your PicPath is a relative path that is converted into an absolute path at some time while loading the image. Most probably you will see that there are no images on the specified location if you use Path.GetFullPath(PicPath) in Debug.

于 2013-06-19T14:50:50.247 回答