如何将 Viewport3D 保存为图像文件?

How to save Viewport3D as Image File?

我正在使用 Delphi 10.3.3.

开发 Firemonkey (FMX) 应用程序

我有一个 Viewport3D 组件。 在 Viewport3D 中,我有许多 3D 形状,例如 TCube 和 TRectangle3D。

我需要将 Viewport3D 的内容(当前视图的屏幕截图)保存到图像文件中。我更喜欢保存为透明 PNG。我该怎么做?

Image1.Bitmap.Assign( Viewport3D1.MakeScreenshot );

用于将位图转换为 png;

Uses FMX.Surfaces;

procedure TMain.Button1Click(Sender: TObject);
var
 Stream: TMemoryStream;
 Surf: TBitmapSurface;

begin
 Stream:=TMemoryStream.Create;
 Stream.Position := 0;
 Surf := TBitmapSurface.Create;
 try
  Surf.Assign(Viewport3D1.MakeScreenshot);
  if TBitmapCodecManager.SaveToStream(Stream, Surf, '.png') then
  Begin
   Stream.SaveToFile('screenshot.png');
  End
  Else
   raise EBitmapSavingFailed.Create('Error saving Bitmap to png');
 finally
  Stream.Free;
  Surf.Free;
 end;
end;