将RenderTargetBitmap转换为Bitmap

时间:2013-11-19 22:16:13

标签: wpf vb.net system.drawing rendertargetbitmap

这看起来像是一个重复的问题,但是没有人回答实际的问题。

这里是: 基本上,我将ViewPort3D渲染为代码中的2D快照,但需要转换该类型 将RenderTargetBitmap放入System.Drawing.BitMap类型(用于2D侧的进一步处理)。

Dim bmpRen As New RenderTargetBitmap(1024, 550, 96, 96, PixelFormats.Pbgra32)
bmpRen.Render(Me.vp3dTiles) 'render the viewport as 2D snapshot

虽然我知道如何将其保存到文件中,但我宁愿跳过该步骤并将bmpRen转换为System.Drawing.Bitmap类型,但是没有方法可以这样做。

1 个答案:

答案 0 :(得分:15)

RenderedTargetBitmapBitmapSource,因此BmpBitmapEncoder可以为我们进行转换:

这是在C#中,但它应该转换为VB而没有任何问题。

RenderTargetBitmap bmpRen = new RenderTargetBitmap(1024, 550, 96, 96, PixelFormats.Pbgra32);
bmpRen.Render(vp3dTiles);

MemoryStream stream = new MemoryStream();
BitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmpRen));
encoder.Save(stream);

Bitmap bitmap = new Bitmap(stream);