您的位置:首页 > 移动开发 > Android开发

Android实例-程序界面内截取屏幕(XE8+小米2)

2015-09-06 10:40 225 查看


结果:

1.只能截取程序界面内的图片。

2.图片有点不清楚,自己设置清楚度。

实例代码:

unit Unit1;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.Layouts;

type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Image1: TImage;
Layout1: TLayout;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses
FMX.Platform; //需要引入
{$R *.fmx}
{$R *.NmXhdpiPh.fmx ANDROID}

function MakeScaleScreenshot(Sender: TControl): TBitmap;//截取屏幕函数
var
fScreenScale: Single;
function GetScreenScale: Single;
var
ScreenService: IFMXScreenService;
begin
Result := 1;
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
begin
Result := ScreenService.GetScreenScale;
end;
end;
begin
fScreenScale := GetScreenScale;
Result := TBitmap.Create(Round(Sender.Width * fScreenScale), Round(Sender.Height * fScreenScale));
Result.Clear(0);
if Result.Canvas.BeginScene then
try
Sender.PaintTo(Result.Canvas, RectF(0, 0, Result.Width, Result.Height));
finally
Result.Canvas.EndScene;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
oBitmap: TBitmap;
begin
oBitmap := MakeScaleScreenshot(Layout1);//此处Layout1为所有容器的容器
Image1.Bitmap.Assign(oBitmap);
oBitmap.DisposeOf;
end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: