Image.Source属性(通过BitmapImage)锁定文件

时间:2016-03-05 20:27:03

标签: wpf vb.net image file locking

我想在我的代码中设置image.source属性,如下所示:

Dim bi as new BitmapImage

bi.BeginInit()
bi.UriSource = new Uri("C:/test.png", uriKind.relativeOrAbsolute)
bi.EndInit()

img.Source = bi

多数工作,但问题是这会锁定文件并使我无法替换文件。

现在我的问题:是否有其他方法来设置image.source属性,以便我可以在它之后说出像file.close()之类的东西?

1 个答案:

答案 0 :(得分:1)

为BitmapImage指定BitmapCacheOption.OnLoad:

Dim bi as new BitmapImage

bi.BeginInit()
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.UriSource = new Uri("C:/test.png", uriKind.relativeOrAbsolute)
bi.EndInit()

img.Source = bi

或者您可以将图像文件内容读取到内存中的缓冲区,然后使用MemoryStream作为BitmapImage的StreamSource:

var imageBytes = File.ReadAllBytes("C:/test.png")
var stream = new MemoryStream(imageBytes);
var bi = new BitmapImage();

bi.BeginInit();
bi.StreamSource = stream;
bi.EndInit();