(iv) 이미지 scrncpt를 캡처하는 단위 파일을 만듭니다
단위 SCRNCPT;
인터페이스
창, 양식, 컨트롤, 클래스, 그래픽을 사용합니다.
함수 capturescreenRect (arect : trect) : tbitmap;
함수 캡처 스크린 : tbitmap;
함수 captureclientimage (control : tcontrol) : tbitmap;
함수 CaptUrecontrolimage (Control : TControl) : TBITMAP;
함수 captureWindowImage (wnd : hwnd) : tbitmap;
구현
함수 capturescreenRect (arect : trect) : tbitmap;
var Screendc : HDC; // 장치 설명 테이블
시작하다
결과 : = tbitmap.create;
결과적으로, 절개
시작하다
너비 : = 오른쪽 왼쪽;
높이 : = 하단 탑;
screendc : = getdc (0);
노력하다
// bool bitblt (hdcdest, nxdest, nydest, nwidth, nheight, hdcsrc, nxsrc, nysrc, dwrop)
// 소스 장치에서 비트 맵을 테이블 hdcsrc에 대상 장치로 복사합니다. 설명 테이블 hdcdest,
// 래스터 opcode dwrop은 소스 다이어그램의 조합 메소드를 지정합니다.
bitblt (Canvas.handle, 0,0, 너비, 높이, 스크린, 왼쪽, 상단, SRCCopy);
마지막으로
릴리스 C (0, Screendc);
끝;
끝;
끝;
// 전체 화면 이미지 캡처
함수 캡처 스크린 : tbitmap;
시작하다
화면과 함께
결과 : = capturescreenRect (rect (0,0, 너비, 높이));
끝;
// 형식 또는 컨트롤의 클라이언트 영역 이미지 크롤링
함수 captureclientimage (control : tcontrol) : tbitmap;
시작하다
//control.clientorigin은 제어 클라이언트 영역의 왼쪽 상단 코너입니다. X, Y는 ClientOrigin의 변수입니다
Control, Control.clientorigin do
결과 : = capturescreenRect (bounds (x, y, clientWidth, clientHeight));
끝;
// 전체 양식이나 제어를 크롤링합니다
함수 CaptUrecontrolimage (Control : TControl) : TBITMAP;
시작하다
제어와 함께
Parent = nil이면 // 부모 양식이없고 위치에 따라 직접 잡아
결과 : = capturescreenRect (경계 (왼쪽, 상단, 너비, 높이)))
else // 부모 양식이 있고 화면 좌표에 대해 전환 한 다음 가져옵니다.
parent.clientToscreen (point (왼쪽, 상단))를 사용합니다
결과 : = capturescreenRect (bounds (x, y, 너비, 높이));
끝;
// 양식 핸들에 따라 크롤링합니다
함수 captureWindowImage (wnd : hwnd) : tbitmap;
var r : trect;
시작하다
getwindowrect (wnd, r);
결과 : = capturescreenRect (r);
끝;
끝.