繁体   English   中英

拍摄特定区域的屏幕截图

[英]Take a screenshot of a particular area

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

在此处输入图片说明

我该如何执行呢?

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

这是一个痛苦的设计,但是,一种简单的方法可能是将所有控件放在一个通用容器上,并将其画布复制到位图。 下面的示例假定您已将图像和所有标签放在一个公共的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;

您可以使用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM