将RenderTargetBitmap转换为Bitmap

MC9*_*000 7 vb.net wpf 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
Run Code Online (Sandbox Code Playgroud)

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

Poc*_*ews 17

RenderedTargetBitmap是一个BitmapSource,所以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);
Run Code Online (Sandbox Code Playgroud)