1

我正在使用 Lazarus,并且我在表单中有一个 TImage 。黑表是 a TImage,数字是labels。我需要对我画的红色区域进行截图。

在此处输入图像描述

我该怎么做?

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

4

2 回答 2

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;
于 2013-12-25T21:03:11.503 回答
4

您可以使用GetFormImage获取表单图像,并将与您的图像区域对应的部分保留在其中:

var
  Bmp: TBitmap;
begin
  Bmp := GetFormImage;
  try
    Bmp.Canvas.CopyRect(Image1.ClientRect, Bmp.Canvas, Image1.BoundsRect);
    Bmp.SetSize(Image1.Width, Image1.Height);
    Bmp.SaveToFile('....');
  finally
    Bmp.Free;
  end;
于 2013-12-25T21:37:59.053 回答