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 が null であり、問​​題が発生しているようです。残念ながら、私は自分で解決策を見つけることができません。

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 streamu がに直接割り当てられているためbitmap source、 が発生しerrorます。最初arraybytes& のconvertそれを取得し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 に答える