如何将 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;
我正在使用 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;