(vi) 면적 캡처 형태
새 form1을 만들고 capture1.pas로 저장하십시오. 속성 국경의 4 가지 속성을 거짓으로 설정하십시오.
Borderstyle은 Bsnone으로 설정되어 있으며 Cursor는 Crcross로 설정되며 FormStyle은 FsstayOntop으로 설정됩니다.
개인 변수 추가 : fdragging : 부울;
Form1 : 영역을 잡을 때 생성 된 기능은 그림을 잡은 후 사라집니다.
단위 캡처 1;
인터페이스
용도
창, 메시지, 시스템, 변형, 클래스, 그래픽, 컨트롤, 양식,
대화;
유형
tform1 = 클래스 (tform)
프로 시저 Formcreate (sender : tobject);
절차 formdestroy (sender : tobject);
절차 formpaint (발신자 : Tobject);
절차 formmousedown (sender : tobject; button : tmousebutton;
Shift : TshiftState; X, Y : Integer);
프로 시저 FormmousEmove (Sender : Tobject; Shift : TshiftState; X,
Y : 정수);
프로 시저 FormMouseUp (sender : tobject; 버튼 : tmouseButton;
Shift : TshiftState; X, Y : Integer);
사적인
fdragging : 부울;
공공의
frect : trect;
FBMP : TBITMAP;
끝;
var
form1 : tform1;
구현
{$ r *.dfm}
절차 tform1. formcreate (sender : tobject);
VAR ADC : HDC; // 장치 설명 테이블
시작하다
fbmp : = tbitmap.create;
fbmp.width : = screen.width;
fbmp.height : = screen.height;
ADC : = getDC (0);
bitblt (fbmp.canvas.handle, 0,0, screen.width, screen.height, adc, 0,0, srccopy);
릴리스 C (0, ADC,);
setBounds (0,0, screen.width, screen.height);
끝;
절차 tform1.formdestroy (sender : tobject);
시작하다
fbmp.free;
끝;
절차 tform1.formPaint (Sender : Tobject);
시작하다
Canvas.Draw (0,0, FBMP); // 캔버스에 그래프를 그립니다
끝;
// 왼쪽 마우스 버튼을 누르면 SetRect를 사용하여 사각형 프렉스를 설정하여 포인트가되도록하십시오.
// DrawFocusRect 로이 사각형을 그립니다
절차 tform1.formmousedown (발신자 : Tobject; 버튼 : tmouseButton;
Shift : TshiftState; X, Y : Integer);
시작하다
버튼 = mbleft가 시작됩니다
fdragging : = 참;
setRect (frect, x, y, x, y);
canvas.drawfocusrect (frect);
끝;
끝;
// 마우스가 움직일 때, 드로잉에 있는지 확인하고 (왼쪽 마우스 버튼을 누르십시오) DrawFocusRect는 사각형을 재설정합니다.
// 오른쪽 하단 모서리를 현재 마우스 위치로 만들고 grawFocusRect를 호출 할 때 사각형을 그립니다.
절차 tform1.formmouseMove (Sender : Tobject; Shift : TshiftState; X,
Y : 정수);
시작하다
fdragging이 시작되면 시작하십시오
canvas.drawfocusrect (frect);
frect.right : = x;
frect.bottom : = y;
canvas.drawfocusrect (frect);
끝;
끝;
// 마우스가 팝업되면 드로잉에 있는지 판단합니다 (왼쪽 마우스 버튼을 누릅니다).
// DrawFocusRect 형태를 닫습니다
절차 tform1.formmouseup (sender : tobject; button : tmouseButton;
Shift : TshiftState; X, Y : Integer);
시작하다
fdragging이 시작되면 시작하십시오
canvas.drawfocusrect (frect);
fdragging : = 거짓;
끝;
modalresult : = mrok;
끝;
끝.