如何使用ImageLocation将图片放入PictureBox?

4

我已经在我的面板中创建了一个图片框,我想用本地的图片来填充它。

到目前为止,我已经完成了以下工作,下面的代码只是我的面板创建代码的一小部分。

PictureBox picture = new PictureBox
        {
            Name = "pictureBox",
            Size = new Size(100, 50),
            Location = new Point(14, 17)
        };
        p.Controls.Add(picture);
        picture.ImageLocation = @"..\Image\1.jpg";

它确实可以工作,但不完全正常,因为在启动我的 C# 窗体应用程序后,它只显示一个带有红色十字中心的小白框,而不是图像。有什么解决办法吗?

2个回答

12
使用 picture.ImageLocation() 来设置图像是可以的,但是你使��了相对路径。在构建后,检查您的路径是否与 .exe 的位置匹配。
例如,如果您的 .exe 位于: <project folder>/bin/Debug/app.exe 那么图像应该在: <project folder>/bin/Image/1.jpg 当然,您也可以在设计时设置图像(在 PictureBox 属性窗格上的 Image 属性)。
如果必须在运行时设置图像,一种确保了解图像位置的方法是将图像文件添加到项目中。例如,向项目添加一个名为 Image 的新文件夹。右键单击文件夹,选择“添加现有项”,并浏览到您的图像(请确保文件筛选器设置为显示图像文件)。添加图像后,在属性窗格中将 Copy to Output Directory 设置为 Copy if newer
此时,当您构建应用程序时,图像文件将被复制,随后您可以使用它。
picture.ImageLocation = @"Image\1.jpg"; 

嗨,感谢回复。我该如何检查路径与.exe文件的位置是否匹配? - Thomas
这是一个相对路径...所以无论你的可执行文件位于何处,都要向上查找1个文件夹,然后从那里查找Image文件夹。 - Jeff Ogata
哦。好的,问题解决了。现在可以加载“图片”了,但是当应用程序加载后,它只显示一个白色框而不是图像。有什么办法可以解决这个问题吗?或者这与图片大小和我的picturebox大小有关系吗? - Thomas
1
@Thomas,不应该与图像或图片框的大小有任何关系。除非图像更大并且具有白色背景?那么图片框可能只显示左上角,也就是白色部分。 - Jeff Ogata
1
@Thomas - 你可以使用 SizeMode(尝试使用 Zoom)来确保图像大小适合 PictureBox - Jeff Ogata

4
如果您提供了错误的路径或损坏的链接,如果编译器找不到图片,那么图片框将在其正文中显示一个X图标。
PictureBox picture = new PictureBox
        {
            Name = "pictureBox",
            Size = new Size(100, 50),
            Location = new Point(14, 17),
            Image = Image.FromFile(@"c:\Images\test.jpg"),
            SizeMode = PictureBoxSizeMode.CenterImage
        };
p.Controls.Add(picture);

或者

PictureBox picture = new PictureBox
        {
            Name = "pictureBox",
            Size = new Size(100, 50),
            Location = new Point(14, 17),
            ImageLocation = @"c:\Images\test.jpg",
            SizeMode = PictureBoxSizeMode.CenterImage
        };
p.Controls.Add(picture);

我不确定您将图像放在文件夹结构中的位置,但是您可以按照以下方式找到路径

 picture.ImageLocation = Path.Combine(System.Windows.Forms.Application.StartupPath, "Resources\Images\1.jpg");

谢谢回复。现在它显示一个白色框,是因为我的图片尺寸吗?因为原始图片和我的图片框尺寸不匹配。 - Thomas
@Thomas,你尝试使用完整路径了吗? - Damith
是的,我已经尝试使用完整路径。但它只显示一个白色框而已。通常情况下,如果没有找到图像,会显示一个红叉。但现在我认为它能够找到图像文件,只是显示一个白色框而已。 - Thomas
尝试将SizeMode设置为PictureBoxSizeMode.CenterImage。 - Damith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接