(vi) แบบฟอร์มการจับภาพพื้นที่
สร้าง Form1 ใหม่บันทึกเป็น Capture1.pas ตั้งค่าคุณสมบัติทั้งสี่ของแอตทริบิวต์ Bordericons เป็นเท็จ
Borderstyle ถูกตั้งค่าเป็น bsnone เคอร์เซอร์ถูกตั้งค่าเป็น crcross, formstyle ถูกตั้งค่าเป็น fsstayontop
เพิ่มตัวแปรส่วนตัว: fdragging: บูลีน;
ฟังก์ชั่นของ Form1: สร้างขึ้นเมื่อคว้าพื้นที่หายไปหลังจากคว้ารูปภาพ
การจับภาพหน่วย 1;
ส่วนต่อประสาน
ใช้
Windows, ข้อความ, sysutils, ตัวแปร, คลาส, กราฟิก, การควบคุม, รูปแบบ,
บทสนทนา;
พิมพ์
tform1 = คลาส (tform)
โพรซีเดอร์แบบฟอร์ม (ผู้ส่ง: tobject);
FORMDESTROY ขั้นตอน (ผู้ส่ง: TOBJECT);
รูปแบบขั้นตอน (ผู้ส่ง: tobject);
โพรซีเดอร์ Formmousedown (ผู้ส่ง: tobject; ปุ่ม: tmouseButton;
SHIFT: TSHIFTSTATE;
ขั้นตอนการจัดรูปแบบ (ผู้ส่ง: tobject; shift: tshiftstate; x,
y: จำนวนเต็ม);
Procedure FormMouseUp (ผู้ส่ง: tobject; ปุ่ม: tmouseButton;
SHIFT: TSHIFTSTATE;
ส่วนตัว
fdragging: บูลีน;
สาธารณะ
Frect: Trect;
FBMP: TBITMAP;
จบ;
วาจา
Form1: TFORM1;
การดำเนินการ
{$ r *.dfm}
ขั้นตอน TFORM1.FormCreate (ผู้ส่ง: TOBJECT);
VAR ADC: HDC;
เริ่ม
fbmp: = tbitmap.create;
fbmp.width: = screen.width;
fbmp.height: = screen.height;
ADC: = getDC (0);
bitblt (fbmp.canvas.handle, 0,0, หน้าจอ, หน้าจอ, หน้าจอ, adc, 0,0, srccopy);
ปล่อย (0, ADC,);
setBounds (0,0, screen.width, screen.height);
จบ;
ขั้นตอน TFORM1.FormDestroy (ผู้ส่ง: tobject);
เริ่ม
fbmp.free;
จบ;
ขั้นตอน TFORM1.FormPaint (ผู้ส่ง: TOBJECT);
เริ่ม
Canvas.Draw (0,0, FBMP);
จบ;
// ถ้าคุณกดปุ่มเมาส์ซ้ายให้ใช้ SetRect เพื่อตั้งค่าสี่เหลี่ยมผืนผ้าเพื่อให้เป็นเพียงจุดหนึ่ง
// วาดรูปสี่เหลี่ยมผืนผ้านี้ด้วย drawfocusrect
ขั้นตอน TFORM1.FormMousedOwn (ผู้ส่ง: tobject; ปุ่ม: tmouseButton;
SHIFT: TSHIFTSTATE;
เริ่ม
ถ้าปุ่ม = mbleft แล้วเริ่มต้น
fdragging: = true;
setRect (frect, x, y, x, y);
Canvas.DrawFocusRect (FRECT);
จบ;
จบ;
// เมื่อเมาส์เคลื่อนที่ให้ตรวจสอบว่าอยู่ในรูปวาด (กดปุ่มเมาส์ซ้าย) และ DrawFocusRect จะรีเซ็ตสี่เหลี่ยมผืนผ้า
// ทำให้มุมขวาล่างอยู่ที่ตำแหน่งเมาส์ปัจจุบันและวาดสี่เหลี่ยมเมื่อโทรหา drawfocusrect
ขั้นตอน TFORM1.FormMousemove (ผู้ส่ง: tobject; shift: tshiftstate; x, x, x, x, x, x, x, x, x, x, x, x, x, x
y: จำนวนเต็ม);
เริ่ม
ถ้า fdragging เริ่มต้น
Canvas.DrawFocusRect (FRECT);
FRECT.RIGHT: = X;
FRECT.BOTTOM: = Y;
Canvas.DrawFocusRect (FRECT);
จบ;
จบ;
// ตัดสินว่ามันอยู่ในรูปวาด (กดปุ่มเมาส์ซ้าย) เมื่อเมาส์ปรากฏขึ้น
// drawfocusret รีเซ็ตสี่เหลี่ยมผืนผ้า
ขั้นตอน TFORM1.FormMouseUp (ผู้ส่ง: tobject; ปุ่ม: tmouseButton;
SHIFT: TSHIFTSTATE;
เริ่ม
ถ้า fdragging เริ่มต้น
Canvas.DrawFocusRect (FRECT);
fdragging: = false;
จบ;
Modalresult: = MROK;
จบ;
จบ.