2011-11-06 121 views
4

在WPF应用程序中,我在真正加载图像时获取图像大小(宽度和高度)(因为我使用缩小的大小加载图像...)并且使用此C#代码得到它:在没有锁定WPF文件的情况下获取图像大小

BitmapFrame frame = BitmapFrame.Create(new Uri(path), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None); 
Size s = new Size(frame.PixelWidth, frame.PixelHeight); 

这工作正常,但它然后锁定图像文件,我稍后想删除的应用程序,但不能。我知道,如果我设置BitmapCacheOption.OnLoad它解决了这个问题,但它然后加载图像,所以我失去了我想要获得的优势与减小的大小(使用DecodePixelWidth等)。

因此,任何人都知道如何事先获取图像大小而不锁定图像?

回答

4

也许你应该使用块中使用流你得到你的图像大小

using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) 
{ 
    BitmapFrame frame = BitmapFrame.Create(fileStream , BitmapCreateOptions.DelayCreation, BitmapCacheOption.None); 
    Size s = new Size(frame.PixelWidth, frame.PixelHeight); 
} 
+0

感谢Stecya后删除锁,它的作品!其实,同时我自己也找到了答案,它与你写的是一样的字母。只有一件事,Size必须在使用块之外声明以供以后使用(但我知道你知道这一点)。 –

相关问题