使用 FireMonkey 截取屏幕截图
FireMonkey(多平台)是一个跨平台的框架,用于构建和部署2D和3D游戏以及交互式应用程序。虽然它主要用于游戏开发,但也可以用于创建其他类型的应用程序。在这里,我们将介绍如何使用 FireMonkey 截取屏幕截图。
方法 1:使用 TImage 和 OnPaint 事件
OnPaint
的事件处理程序。OnPaint
事件中编写如下代码: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 函数
TScreenCapture
的类。TScreenCapture
类中,添加以下代码: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 事件
OnPaint
的事件处理程序。OnPaint
事件中编写如下代码: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 组件所在的区域。
领取专属 10元无门槛券
手把手带您无忧上云