图像加载部分

时间:2016-08-05 06:50:04

标签: c# wpf

我试图在我的WPF应用程序中加载大约20张图片。只有第一张图像完全加载。其他图像部分加载。当我使用断点进行调试时,我试图在2秒后加载每个图像并且运行良好。

代码

将加载图片,

foreach (string path in ImagesCollection)
   {
      DisplayImage = LoadImage(path);
   }

加载图像方法,

 MemoryStream mem;

 if (!string.IsNullOrEmpty(path) && (File.Exists(path)))
     {

         FileInfo ImageFile = new FileInfo(path);
         ImageFile.Refresh();
         if (mem != null)
           {
              mem.Dispose();
           }
         using (var stream = ImageFile.OpenRead())
            {
               mem = new MemoryStream();

               stream.CopyTo(mem);

            }
         mem.Position = 0;
         ImageFrame = BitmapFrame.Create(mem);

     }

截图:

enter image description here

我相信Dispose或新实例会导致图片无法加载。请帮助。

1 个答案:

答案 0 :(得分:1)

BitmapFrame.Create状态的文档“只有在使用OnLoad缓存选项时,才能在创建帧后关闭bitmapStream。默认的OnDemand缓存选项会保留流,直到需要该帧”

这意味着一旦将MemoryStream传递给BitmapFrame,就无法重新使用它。这是错误的来源。

为了提高效率,只需传递FileStream即可。 加载图像方法

if (!string.IsNullOrEmpty(path) && (File.Exists(path)))
{

    var stream = ImageFile.OpenRead())
    ImageFrame = BitmapFrame.Create(stream);
}