截取特定区域的屏幕截图

Alb*_*ssi 1 delphi screenshot lazarus fpc

我正在使用Lazarus,我在表单中有一个TImage.黑色表是a TImage,数字是labels.我需要截取我绘制的红色区域的截图.

在此输入图像描述

我怎么能这样做?

我有Lazarus 1.0.14,我没有找到任何关于此的例子.有什么建议吗?

TLa*_*ama 5

这是一个痛苦的设计,但是,一个简单的方法可能是将所有控件放在一个公共容器上并将其画布复制到一个位图.以下示例假定您已将图像和所有标签放在公共TPanel控件(Panel1)上:

procedure TForm1.Button1Click(Sender: TObject);
var
  R: TRect;
  Bitmap: TBitmap;
begin
  Bitmap := TBitmap.Create;
  try
    R := Rect(0, 0, Panel1.Width, Panel1.Height);
    Bitmap.SetSize(Panel1.Width, Panel1.Height);
    Bitmap.Canvas.CopyRect(R, Panel1.Canvas, R);
    Bitmap.SaveToFile('C:\Screenshot.bmp');
  finally
    Bitmap.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)