如何将Viewport3D保存为图像文件?
我正在使用 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;