2

我正在尝试BitmapImage从服务返回的字节数组创建一个。

我的代码是:

using (sc = new ServiceClient())
{
    using (MemoryStream ms = new MemoryStream(sc.GetImage()))
    {
        Display = new BitmapImage();
        Display.BeginInit();
        Display.StreamSource = ms;
        Display.EndInit();
    }
}

但是,该方法会引发异常EndInit。它说Object reference not set to an instance of an object.

看来,Uri 是空的,它会导致问题。不幸的是,我自己找不到解决方案。

4

2 回答 2

4

好吧,事实证明,WPF 绑定导致了错误。

private BitmapImage _display;
public BitmapImage Display
{
    get { return _display; }
    set
    {
        _display = value;
        RaisePropertyChanged("Display");
    }
}

我通过不在属性 Display 本身中获取图像,而是在归档的 _display 中获取图像来解决了这个问题。因此,以下工作正常。

using (sc = new ServiceClient())
{
    using (MemoryStream ms = new MemoryStream(sc.GetImage()))
    {
        _display = new BitmapImage();
        _display.BeginInit();
        _display.CacheOption = BitmapCacheOption.OnLoad;
        _display.StreamSource = ms;
        _display.EndInit();
    }
}

Display = _display;
于 2013-05-18T16:50:02.847 回答
1

memory stream您直接分配给bitmap source,这导致error. 首先,您需要将array&bytes的值convert放入 the 中memory stream,然后分配给bitmap source,仅此而已!

using (sc = new ServiceClient())
    {
            Byte[] array = sc.GetImage();

            Display = new BitmapImage();
            Display.BeginInit();
            Display.StreamSource = new MemoryStream(array);
            Display.EndInit();
     }
于 2013-05-18T15:22:53.977 回答