从带有路径的资源文件加载PictureBox图像(第3部分)
我知道之前已经问过(并回答过)这个问题。 但是,没有一个解决方案适合我。 这可能是由于我的无能,伏都教诅咒或者我想念的简单而明显的事情。
下面是拼图的所有相关部分的屏幕截图:
截屏http://dinosaur-island.com/PlantPictureBoxScreenCap.jpg
正如您所看到的,有很多植物作为资源加载到Images文件夹中。 有一个带有名为“PlantPicture”的图片框的表单。 有字符串,我知道它有一个很好的路径(因为我在调试器中检查过它):
PicPath = PicPath+".bmp";
截屏http://dinosaur-island.com/PlantDebugger.jpg
我尝试了很多种装载,铸造等方法等。
如果你会怜悯并再给它一次,我会很感激任何建议。 谢谢!
路径应该是这样的: "Images\a.bmp"
。 (注意缺少一个前导斜杠,而斜杠是反斜杠。)
然后:
pictureBox1.Image = Image.FromFile(@"Images\a.bmp");
我只是试图确保它,它的工作原理。 这是你得到的另一个答案 – “永远复制”。
好的……所以首先你需要在你的项目中导入图像
1)在“表单设计”中选择图片框
2)打开PictureBox任务(它是在图片框边缘右侧固定的小箭头)
3)点击“选择图片…”
4)选择第二个选项“Project resource file:”(此选项将创建一个名为“Resources”的文件夹,您可以使用Properties.Resources访问该文件夹)
5)单击导入并从计算机中选择图像(现在,将在步骤4中创建的Resources文件夹中发送与图像同名的图像副本)
6)点击确定
现在图像在您的项目中,您可以将它与属性命令一起使用。当您想要从picturebox更改图片时,只需输入以下代码:
pictureBox1.Image = Properties.Resources.myimage;
注意:myimage代表图像的名称…在资源之后键入点后,在您的选项中它将是您导入的图像文件
这取决于您的文件路径。 对我来说,当前目录是[project]\bin\Debug
,所以我不得不两次移动到父文件夹。
Image image = Image.FromFile(@"..\..\Pictures\"+text+".png"); this.pictureBox1.Image = image;
要查找当前目录,可以创建名为label2的虚拟标签并写入:
this.label2.Text = System.IO.Directory.GetCurrentDirectory();
将“复制到输出目录”设置为“始终复制”或“如果更新则复制”可能对您有所帮助。
PicPath是一个相对路径,在加载图像时会在某个时间转换为绝对路径。 如果在Debug中使用Path.GetFullPath(PicPath)
,很可能会看到指定位置上没有图像。
接受的答案有一个主要缺点!
如果以这种方式加载图像,PictureBox将锁定图像,因此如果您尝试对该图像执行任何将来的操作,您将获得在另一个应用程序中使用的错误消息图像!
本文在VB中展示了解决方案
这是C#实现
FileStream fs = new System.IO.FileStream(@"Images\a.bmp", FileMode.Open, FileAccess.Read); pictureBox1.Image = Image.FromStream(fs); fs.Close();