(vi)エリアキャプチャフォーム
新しいform1を作成し、Capture1.pasとして保存します。属性ボーダリコンの4つのプロパティをfalseに設定します。
BorderStyleはBSNONEに設定されており、カーソルはCRCROSSに設定され、FormStyleはFSSTAYONTOPに設定されています。
プライベート変数を追加:fdraging:boolean;
form1の機能:領域をつかむときに作成され、写真をつかんだ後に消えます。
ユニットCapture1;
インタフェース
用途
窓、メッセージ、sysutils、バリアント、クラス、グラフィック、コントロール、フォーム、
ダイアログ;
タイプ
tform1 = class(tform)
手順formcreate(sender:tobject);
手順formdestroy(送信者:tobject);
手順フォームペイント(送信者:tobject);
手順FormMousedown(送信者:tobject; button:tmousebutton;
シフト:tshiftState; x、integer);
手順formmousemove(sender:tobject; shift:tshiftstate; x、
Y:整数);
手順formmouseup(sender:tobject; button:tmousebutton;
シフト:tshiftState; x、integer);
プライベート
fdragging:boolean;
公共
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);
releasec(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を使用して長方形のFRECTを設定して、それがポイントになるようにします。
// drawfocusRectでこの長方形を描きます
手順tform1.formmousedown(sender:tobject; button:tmousebutton;
シフト:tshiftState; x、integer);
始める
ボタン= mbleftの場合、開始します
fdragging:= true;
setRect(FRECT、x、y、x、y);
canvas.drawfocusRect(FRECT);
終わり;
終わり;
//マウスが動いているときに、それが図面にあるかどうか(左マウスボタンを押します)かどうかを判断し、drawFocusRectは長方形をリセットします
//右下隅を現在のマウスの位置にし、DrawFocusRectを呼び出すときに長方形を描画します
手順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;
シフト:tshiftState; x、integer);
始める
fdraggingの場合、開始します
canvas.drawfocusRect(FRECT);
fdragging:= false;
終わり;
ModalResult:= mrok;
終わり;
終わり。