首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用FireMonkey(多平台)截取屏幕截图

使用 FireMonkey 截取屏幕截图

FireMonkey(多平台)是一个跨平台的框架,用于构建和部署2D和3D游戏以及交互式应用程序。虽然它主要用于游戏开发,但也可以用于创建其他类型的应用程序。在这里,我们将介绍如何使用 FireMonkey 截取屏幕截图。

方法 1:使用 TImage 和 OnPaint 事件

  1. 在您的 FireMonkey 项目中,添加一个 TImage 组件。如果需要,可以调整其位置和大小。
  2. 在您的项目中创建一个名为 OnPaint 的事件处理程序。
  3. OnPaint 事件中编写如下代码:
代码语言:markdown
复制
procedure TMyForm.OnPaint(Sender: TObject);
begin
  if (Sender is TImage) then
  begin
    TImage(Sender).Canvas.Brush.Color := clWhite;
    TImage(Sender).Canvas.Font.Color := clBlack;
    TImage(Sender).Canvas.Font.Size := 14;
    TImage(Sender).Canvas.TextOut(10, 10, 'My Application');
  end
  else
    inherited;
end;

方法 2:使用 Windows API 函数

  1. 在您的项目中添加一个名为 TScreenCapture 的类。
  2. TScreenCapture 类中,添加以下代码:
代码语言:markdown
复制
unit ScreenCapture;

interface

uses
  SysUtils, Windows, Forms, Classes, Graphics, Controls, StdCtrls, ExtCtrls,
  FMX, FMX.Platform, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls;

type
  TScreenCapture = class(TComponent)
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CaptureScreen();
  end;

var
  ScreenCapture: TScreenCapture;

implementation

{$R *.fmx}

procedure TScreenCapture.CaptureScreen();
var
  Bitmap: TBitmap;
  Str: string;
begin
  // 获取当前屏幕截图
  Bitmap := TBitmap.Create;
  try
    Bitmap.SetSize(Width, Height);
    Bitmap.Canvas.Draw(0, 0, Bitmap);

    // 将截图转换为 24 位真彩色位图
    Bitmap.SetSize(Width, Height, 24);
    Str := Format('Image-%d.png', [Count]);
    Bitmap.SaveToPNG(Str);

    // 显示截图
    Image1.Picture.Assign(Bitmap);
  finally
    Bitmap.Free;
  end;
end;

end.

方法 3:使用 FireMonkey 组件中的 OnPaint 事件

  1. 在您的 FireMonkey 应用程序中,添加一个 TImage 组件。如果需要,可以调整其位置和大小。
  2. 在您的项目中创建一个名为 OnPaint 的事件处理程序。
  3. OnPaint 事件中编写如下代码:
代码语言:markdown
复制
procedure TFrmMain.FormPaint(Sender: TObject);
begin
  if (Sender is TImage) then
  begin
    TImage(Sender).Canvas.Brush.Color := clWhite;
    TImage(Sender).Canvas.Font.Color := clBlack;
    TImage(Sender).Canvas.Font.Size := 14;
    TImage(Sender).Canvas.TextOut(10, 10, 'My Application');
  end
  else
    inherited;
end;

以上三种方法都可以实现 FireMonkey 截取屏幕截图的功能。但是,由于 FireMonkey 的局限性,可能无法像原生应用程序那样截取整个屏幕,而只能截取当前 TImage 组件所在的区域。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券