将RenderTargetBitmap转换为位图

7
这似乎是一个重复的问题,但实际上没有人回答实际的问题。
基本上,我正在用代码渲染 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类型,但是没有可用的方法来实现。


不要在WPF中使用 System.Drawing 的东西。 - Federico Berasategui
@FedericoBerasategui 像托盘图标这样的东西仍然需要Win32 API的GDI组件。 - TimTIM Wong
1个回答

19

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);

1
如果您需要使用alpha /透明度,请使用PngBitmapEncoderPixelFormats.Pbgra32 - TimTIM Wong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接