截取屏幕特定部分的屏幕截图
Take screenshot of specific part of screen
我正在尝试截取屏幕特定部分的屏幕截图。这是我想要的屏幕部分的坐标 'cut' :
还剩 : 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, 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:\users\admin\desktop\screen.bmp');
finally
ReleaseDC(0, c.Handle);
Bild.free;
c.Free;
end;
end;
您在这里所做的是复制整个屏幕并将其绘制在新位图中的坐标 Rect(442,440,792,520);
处...它位于 canvas.
之外
坐标Rect(442,440,792,520)
对应你要从源位图中得到的部分。你想复制它 "inside" 你的新位图,所以在 rect Rect(0,0,350,80)
您可以像这样简单地调整您的矩形:
rect_source := Rect(442,440,792,520);
rect_destination := Rect(0,0,350,80);
您的其余代码似乎是正确的。
我正在尝试截取屏幕特定部分的屏幕截图。这是我想要的屏幕部分的坐标 'cut' :
还剩 : 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, 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:\users\admin\desktop\screen.bmp');
finally
ReleaseDC(0, c.Handle);
Bild.free;
c.Free;
end;
end;
您在这里所做的是复制整个屏幕并将其绘制在新位图中的坐标 Rect(442,440,792,520);
处...它位于 canvas.
坐标Rect(442,440,792,520)
对应你要从源位图中得到的部分。你想复制它 "inside" 你的新位图,所以在 rect Rect(0,0,350,80)
您可以像这样简单地调整您的矩形:
rect_source := Rect(442,440,792,520);
rect_destination := Rect(0,0,350,80);
您的其余代码似乎是正确的。