【问题标题】:How can I tell if a WPF bitmap image has failed to load?如何判断 WPF 位图图像是否加载失败?
【发布时间】:2015-06-04 10:03:10
【问题描述】:

我正在使用以下代码将图像从文件加载到位图图像类中,以便以特定大小显示给用户:

                BitmapImage resized = new BitmapImage();
                FileStream fs = new FileStream(ImageSource, FileMode.Open);
                MemoryStream ms = new MemoryStream();
                fs.CopyTo(ms);
                fs.Close();
                resized.BeginInit();
                resized.CacheOption = BitmapCacheOption.OnDemand;
                resized.DecodePixelHeight = (int)(_imageBaseHeight * zoomRate);
                resized.DecodePixelWidth = (int)(_imageBaseWidth * zoomRate);
                resized.StreamSource = ms;
                resized.EndInit();
                ImageDisplay = resized;

问题在于,有时,在特别大的图像上,这会静默失败并显示空白图像而不会引发异常。是否有我可以在 EndInit() 之后检查的标志以确保图像已加载?

【问题讨论】:

    标签: c# wpf imaging


    【解决方案1】:

    使用resized.DownloadFailed 事件获取信息。

    【讨论】:

    • 谢谢!看起来它一直在发生在 DecodeFailed 上。有没有办法从这些处理程序向用户显示消息?看起来它们都发生在 UI 线程之外。
    • @Dan: 使用类似:Dispatcher.BeginInvoke(new Action(() => { /*Her come your action*/ }), DispatcherPriority.ApplicationIdle);
    【解决方案2】:

    您也可以使用 ImageFailed 事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-27
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      相关资源
      最近更新 更多