0

私はこれを試しましたが、例外があります - オブジェクトの現在の状態のため、操作は有効ではありません

private BitmapFrame backconvertor(byte[] incomingBuffer)
    {
        BitmapImage bmpImage = new BitmapImage();
        MemoryStream mystream = new MemoryStream(incomingBuffer);
        bmpImage.StreamSource = mystream;
        BitmapFrame bf = BitmapFrame.Create(bmpImage);
        return bf;
    }

しようとするとエラーが発生します

return backconvertor(buff); 

他の関数で (バフ - 準備完了!)

4

2 に答える 2

2

ドキュメントによると、イメージを初期化するには、との間で初期化する必要がありBeginInitますEndInit。あれは:

bmpImage.BeginInit();
bmpImage.StreamSource = mystream;
bmpImage.EndInit();

または、ストリームをコンストラクターに渡すことができます。

bmpImage = new BitmapImage(mystream);

の例と詳細については、http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.begininit.aspxを参照してくださいBeginInit

于 2011-11-28T15:52:39.433 に答える
1

これは、バイトを BitmapFrame に処理するために WPF コンバーターにあるもので、完全に機能します。

            var imgBytes = value as byte[];
            if (imgBytes == null)
                return null;
            using (var stream = new MemoryStream(imgBytes))
            {
                return BitmapFrame.Create(stream,
                    BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
            }

また、以前にも Task.Run で使用したため、スレッドセーフです。

于 2016-03-21T16:40:47.617 に答える