7

这看起来像一个 dup 问题,但没有人回答实际问题。

这里是:基本上,我将 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

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

4

1 回答 1

18

RenderedTargetBitmap是 a 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);
于 2013-11-19T22:37:40.653 回答