winforms 锁定PictureBox中的图像文件

ijxebb2r  于 2022-11-17  发布在  其他
关注(0)|答案(4)|浏览(172)

我将图像加载到图片框中:

myPictureBox.Image = Image.FromFile(strImageFile);

和工作完美,但图像文件被锁定,我无法管理,直到我的应用程序关闭。
我需要,从程序的另一个窗口,保存一个新的图像重新加载时,这个子窗口关闭。

velaa5lx

velaa5lx1#

Image.FromFile将使文件保持打开状态,以防止在映像被释放之前访问映像文件。如果要释放锁定,则需要将映像文件保留在内存中。

myPictureBox.Image = Image.FromStream(new MemoryStream(File.ReadAllBytes(strImageFile)));
d6kp6zgx

d6kp6zgx2#

一种简单的方法是将映像从文件复制到一个新的Bitmap,然后从文件中释放示例。最好使用适当的using构造来完成这一操作:

using(var fromFile = Image.FromFile(strImageFile))
{
    myPictureBox.Image = new Bitmap(fromFile);
}
lrpiutwd

lrpiutwd3#

documented的形式从文件中加载图像,并为图片框分配一个克隆示例。
如果要在多个PictureBox控件中使用相同的图像,请为每个PictureBox创建图像的克隆。从多个控件访问相同的图像会导致发生异常。
要使文件保持解锁状态,只需在克隆时间内使用该文件:

using ( var img = Image.FromFile( fileName ) )
{
    pictureBox2.Image = (Image) img.Clone();
}
nzk0hqpo

nzk0hqpo4#

您可以使用Image.FromStream而不是Image.FromFile,并将您正在阅读流 Package 到using中,以确保它在您读取完后将被释放

using (var stream = File.Open(strImageFile, FileMode.Open))
{
     myPictureBox.Image = Image.FromStream(stream);
}

相关问题