winforms 不锁定文件的Image.fromFile()的替代方法

kx1ctssn  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(126)

这个问题似乎已经在处理图像时出现了。我想在不锁定图像的情况下读取图像。通过各种其他问题(例如问题),我找到了各种解决方法。对许多人来说,有效的方法是使用位图保存图像,例如:

if (new FileInfo(openImageDialog.FileName).Exists) {
               Image tmp = Image.FromFile(openImageDialog.FileName);
               pictureBoxImage.Image = new Bitmap(tmp);
               tmp?.Dispose();
         }

我的问题是,我想显示一个具有透明度的png,这显然是失去了与位图。
有人能来救我吗?

sqougxex

sqougxex1#

显式创建您的文件流并使用Image.FromStream,从而允许您指定FileShare-mode:

using var fs = File.Open(openImageDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
Image tmp = Image.FromStream(fs);

您可以允许FileShare.ReadWrite,但这可能不是一个好主意,因为如果有人同时写入同一个文件,事情可能会中断。
我不知道你说的是什么关于透明度的问题。.Net Bitmaps支持透明度,.bmp * 文件 * 不支持,但是你可以使用Bitmap或Image类保存和加载png文件。我也不知道透明度和文件锁定有什么关系。

相关问题