[英]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.