【问题标题】:How to save Viewport3D as Image File?如何将 Viewport3D 保存为图像文件?
【发布时间】:2021-10-12 04:39:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: delphi firemonkey delphi-10.3-rio


    【解决方案1】:
    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;
    

    【讨论】:

    • 非常感谢!
    • 需要注意的是Viewport3D.Color属性应该设置为Null才能得到一个透明的图片。我很确定 OP 已经知道这一点,但它可能对其他人有用。
    猜你喜欢
    • 1970-01-01
    • 2019-01-04
    • 2011-03-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2012-04-16
    • 2021-03-17
    • 2019-05-19
    相关资源
    最近更新 更多