从带有路径的资源文件加载PictureBox图像(第3部分)

时间:2013-06-19 14:23:41

标签: c# picturebox

我知道此问题之前已被提及(并已回答)。但是,没有一个解决方案适合我。这可能是由于我的无能,伏都教诅咒或者我想念的简单明显的事情。

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

Screen capture http://dinosaur-island.com/PlantPictureBoxScreenCap.jpg

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

            PicPath = PicPath+".bmp";

Screen capture http://dinosaur-island.com/PlantDebugger.jpg

我尝试过多种加载,投射等方式。

如果你怜悯并再给它一次,我会很感激任何建议。谢谢!

5 个答案:

答案 0 :(得分:42)

路径应该是:"Images\a.bmp"。 (注意缺少一个前导斜杠,而斜杠是后退斜杠。)

然后:

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

我只是试着确保它的确有效。这是你得到的另一个答案 - “永远复制”。

答案 1 :(得分:11)

好的......所以首先需要在项目中导入图像

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

2)打开PictureBox任务(这是在图片框边缘右侧固定的小箭头)

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

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

5)点击导入并从您的计算机中选择您的图像(现在,将在步骤4中创建的Resources文件夹中发送与图像同名的图像副本)

6)点击确定

现在图像在您的项目中,您可以将它与属性命令一起使用。当您想要从图片框中更改图片时,只需输入以下代码:

pictureBox1.Image = Properties.Resources.myimage;

注意:myimage代表图像的名称...在资源之后键入点后,在您的选项中它将是您导入的图像文件

答案 2 :(得分:6)

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

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

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

this.label2.Text = System.IO.Directory.GetCurrentDirectory();

答案 3 :(得分:3)

将“复制到输出目录”设置为“始终复制”或“如果更新则复制”可能对您有所帮助。

您的PicPath是一个相对路径,在加载图像时会在某个时间转换为绝对路径。 如果在Debug中使用Path.GetFullPath(PicPath),很可能会看到指定位置上没有图像。

答案 4 :(得分:2)

接受的答案有一个主要缺点! 如果您按照PictureBox 锁定图像的方式加载图像,那么如果您尝试对该图像执行任何操作,您将收到错误消息在另一个应用程序中使用的图像!
article show solution in VB

这是C#实现

 FileStream fs = new System.IO.FileStream(@"Images\a.bmp", FileMode.Open, FileAccess.Read);
  pictureBox1.Image = Image.FromStream(fs);
  fs.Close();