将RenderTargetBitmap转换为BitmapImage
我有一个RenderTargetBitmap
,我需要将其转换为BitmapImage
。 请检查以下代码。
RenderTargetBitmap bitMap = getRenderTargetBitmap(); Image image = new Image();// This is a Image image.Source = bitMap;
在上面的代码中我使用了Image.Now我需要使用BitmapImage。 我怎样才能做到这一点?
RenderTargetBitmap bitMap = getRenderTargetBitmap(); BitmapImage image = new BitmapImage();// This is a BitmapImage // how to set bitMap as source of BitmapImage ?
虽然似乎没有必要将RenderTargetBitmap
转换为BitmapImage
,但您可以轻松地将RenderTargetBitmap
编码为MemoryStream
并从该流中解码BitmapImage
。
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(); }
private async void Button_Click(object sender, RoutedEventArgs e) { RenderTargetBitmap bitMap = new RenderTargetBitmap(); await bitMap.RenderAsync(grid); Image image = new Image();// This is a Image image.Source = bitMap; image.Height = 150; image.Width = 100; grid.Children.Add(image); }
这看起来更简单。