加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 截取屏幕特定部分的屏幕截图

发布时间:2020-12-15 09:07:25 所属栏目:大数据 来源:网络整理
导读:我正在尝试截取屏幕特定部分的屏幕截图.这是我要“剪切”的屏幕部分的坐标: 左:442 上:440 右:792 下图:520 也就是说,宽度为350px,高度为80px的矩形.但我不知道如何使用CopyRect来完成这项任务,而不是我得到一个空白的图像.这是我的代码: function scr
我正在尝试截取屏幕特定部分的屏幕截图.这是我要“剪切”的屏幕部分的坐标:

左:442
上:440
右:792
下图:520

也就是说,宽度为350px,高度为80px的矩形.但我不知道如何使用CopyRect来完成这项任务,而不是我得到一个空白的图像.这是我的代码:

function screenshot: boolean;
var
  Bild : TBitmap;
  c: TCanvas;
  rect_source,rect_destination : TRect;
begin
   c := TCanvas.Create;
   bild := tbitmap.Create;
   c.Handle := GetWindowDC(GetDesktopWindow);
   try
     rect_source := Rect(0,Screen.Width,Screen.Height);
     rect_destination := Rect(442,440,792,520);
     Bild.Width := 350;
     Bild.Height := 80;
     Bild.Canvas.CopyRect(rect_destination,c,rect_source);
     Bild.savetofile('c:usersadmindesktopscreen.bmp');
   finally
    ReleaseDC(0,c.Handle);
     Bild.free;
     c.Free;
   end;
end;

解决方法

你在这里做的是复制整个屏幕并在坐标Rect(442,520)处绘制它;在你的新位图……哪个不在它的画布上.

坐标Rect(442,520)对应于要从源位图获取的部分.你想把它复制到新的位图里面,所以在rect Rect(0,350,80)中

您可以像这样调整矩形:

rect_source := Rect(442,520);
 rect_destination := Rect(0,80);

其余的代码似乎是正确的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读