已加载 pictureBox.ImageLocation 为空

Loaded pictureBox.ImageLocation is null

当我单击 pictureBox1 中显示的图像时,我正在尝试执行某些操作。 pictureBox 使用此代码加载:

string imgpath = @"img6.png";
pictureBox48.Image = Image.FromFile(imgpath);

然后控制权交给我,这样我就可以看到图片已正确加载。 然后我点击图片:

public void pictureBox48_Click(object sender, EventArgs e)
{
string variable1 = pictureBox48.ImageLocation;
Form3 fo = new Form3(variable1);
fo.ShowDialog();
}

这行不通。当我调试代码时,我看到 variable1 保持 null,即 pictureBox48.ImageLocationnull。这是为什么?不应该是那里分配的图片路径吗?

当您使用 Image 属性 设置图像时无法获取图像路径,因为您正在分配一个 Image 可能来自不同来源的对象。

使用ImageLocation设置图像。

string imgpath = @"img6.png";
pictureBox48.ImageLocation = imgpath;

当您在 PictureBox 中单击时,您可以使用相同的路径获取路径 属性:

public void pictureBox48_Click(object sender, EventArgs e)
{
    string variable1 = pictureBox48.ImageLocation;
    Form3 fo = new Form3(variable1);
    fo.ShowDialog();
}

在处理 ImagePictureBox 时,我建议不要使用图像的 LocationPath 之类的东西。假设当图像被加载时,用户将其从硬盘驱动器中删除,并且您留下了充满错误的代码。

这就是为什么您应该依赖 Image 本身,因为它包含有关图像的所有信息,例如像素格式、宽度、高度和原始像素数据。

我建议您只复制图像,而不是文件路径。

这段代码应该给你一个提示:

pixtureBox48.Image = Image.FromFile(imgPath);
// above code assumes that the image is still on hard drive and is accessible,

// now let's assume user deletes that file. You have the data but not on the physical location.

Image copyImage = (Image)pictureBox48.Image.Clone();
Form3 fo = new Form(copyImage); // change .ctor definition to Form(Image copy)
fo.ShowDialog();