(iv)画像scrncptをキャプチャするユニットファイルを作成します
ユニットSCRNCPT;
インタフェース
ウィンドウ、フォーム、コントロール、クラス、グラフィックスを使用します。
関数CaptureScreenRect(arect:trect):tbitmap;
関数CaptureScreen:tbitmap;
関数captureclientimage(control:tcontrol):tbitmap;
関数capturecontrolimage(control:tcontrol):tbitmap;
関数CaptureWindowimage(WND:HWND):tbitmap;
実装
関数CaptureScreenRect(arect:trect):tbitmap;
var screendc:HDC; //デバイスの説明テーブル
始める
結果:= tbitmap.create;
結果として、arectはします
始める
幅:=右側;
高さ:=ボトムトップ;
screendc:= getDc(0);
試す
// bool bitblt(hdcdest、nxdest、nydest、nwidth、nheight、hdcsrc、nxsrc、nysrc、dwrop)
//ソースデバイスの説明テーブルHDCSRCからビットマップをターゲットデバイスの説明テーブルHDCDESTにコピーします。
//ラスターオプコードDWROPソース図の組み合わせ方法を指定します
BITBLT(Canvas.Handle、0,0、幅、高さ、スクリーンド、左、上、srccopy);
ついに
releasec(0、screendc);
終わり;
終わり;
終わり;
//フルスクリーン画像キャプチャ
関数CaptureScreen:tbitmap;
始める
画面で
結果:= CaptureScreenRect(rect(0,0、width、height));
終わり;
//フォームまたはコントロールのクライアント領域の画像をクロールする
関数captureclientimage(control:tcontrol):tbitmap;
始める
//CONTROL.CLIENTORIGINは、コントロールクライアント領域の左上隅です。 x、yはクライアントリージンの変数です
Control、Control.Clientorigin do
結果:= CaptureScreenRect(bounds(x、y、clientWidth、clientheight));
終わり;
//フォームまたはコントロール全体をクロールします
関数capturecontrolimage(control:tcontrol):tbitmap;
始める
コントロールしてください
親= nil then //親の形がない場合、その場所に従って直接それをつかむ
結果:= CaptureScreenRect(境界(左、上、幅、高さ))
else //親フォームがあり、画面座標に対してそれを変換し、それをつかむ
parent.clientToscreen(ポイント(左、上))を使用します
結果:= CaptureScreenRect(bounds(x、y、width、height));
終わり;
//フォームハンドルに従ってクロールします
関数CaptureWindowimage(WND:HWND):tbitmap;
var R:Trect;
始める
getWindowRect(wnd、r);
結果:= CaptureScreenRect(r);
終わり;
終わり。