首页 > 解决方案 > 如何将 Viewport3D 保存为图像文件?

问题描述

我正在使用 Delphi 10.3.3 开发 Firemonkey (FMX) 应用程序。

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

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

标签: delphifiremonkeydelphi-10.3-rio

解决方案


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;

推荐阅读