将RenderTargetBitmap转换为BitmapImage

sha*_*ila 9 c# wpf bitmapimage rendertargetbitmap

我有一个RenderTargetBitmap,我需要将其转换为BitmapImage.请检查以下代码.

 RenderTargetBitmap bitMap = getRenderTargetBitmap();
 Image image = new Image();// This is a Image
 image.Source = bitMap;
Run Code Online (Sandbox Code Playgroud)

在上面的代码中我使用了Image.Now我需要使用BitmapImage.我怎样才能做到这一点?

 RenderTargetBitmap bitMap = getRenderTargetBitmap();
 BitmapImage image = new BitmapImage();// This is a BitmapImage
 // how to set bitMap as source of BitmapImage ?
Run Code Online (Sandbox Code Playgroud)

Cle*_*ens 17

虽然似乎没有必要将a转换RenderTargetBitmap为a BitmapImage,但您可以轻松地将其编码RenderTargetBitmap为a MemoryStreamBitmapImage从该流中解码.

WPF中有几个BitmapEncoders,下面的示例代码使用了一个PngBitmapEncoder.

var renderTargetBitmap = getRenderTargetBitmap();
var bitmapImage = new BitmapImage();
var bitmapEncoder = new PngBitmapEncoder();
bitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));

using (var stream = new MemoryStream())
{
    bitmapEncoder.Save(stream);
    stream.Seek(0, SeekOrigin.Begin);

    bitmapImage.BeginInit();
    bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
    bitmapImage.StreamSource = stream;
    bitmapImage.EndInit();
}
Run Code Online (Sandbox Code Playgroud)