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

zet*_*tar 21 c# picturebox

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

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

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

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

            PicPath = PicPath+".bmp";
Run Code Online (Sandbox Code Playgroud)

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

我尝试了很多种装载,铸造等方法等.

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

isp*_*iro 44

路径应该是这样的:"Images\a.bmp".(注缺乏领导斜线和斜线是斜线.)

然后:

pictureBox1.Image = Image.FromFile(@"Images\a.bmp");
Run Code Online (Sandbox Code Playgroud)

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

  • @zetar"@Images\None.bmp"是错误的.@"Images\None.bmp"是正确的.@只是告诉C#_not_转义在"\"之后的"N",而是将"\"简单地视为反斜杠.您也可以使用:"\\"(双反斜杠.) (2认同)

Ali*_*eon 12

好的...首先,您需要在项目中导入图像

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

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

3)点击"选择图片..."

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

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

6)点击确定

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

pictureBox1.Image = Properties.Resources.myimage;
Run Code Online (Sandbox Code Playgroud)

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


Sam*_*oud 6

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

这是 C# 实现

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


che*_*esu 6

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

Image image = Image.FromFile(@"..\..\Pictures\"+text+".png");
this.pictureBox1.Image = image;
Run Code Online (Sandbox Code Playgroud)

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

this.label2.Text = System.IO.Directory.GetCurrentDirectory();
Run Code Online (Sandbox Code Playgroud)