いつもお世話になります。今 キャプチャーの処理を作成していまして、矩形のコントロールの取り込みー保存を行っています。
今は ダミー用のFormを準備しそこにTImageを貼り付け、ボタンが押されると デスクトップのキャプチャーを取得しTImageに読み込ませて、ダミーFormをデスクトップに表示させています。その後指定の矩形エリアを選択するという処理をしています。
ところが 上記の場合問題が発生しています。
i) ダミー用のFormを表示させるときに画面が一瞬フラッシュしてしまう。
TImageには TBitmapのイメージをDrawで処理しています。
ii) マルチモニターだと キャプチャーから表示までに3〜4秒ぐらい処理にかかってしまいます。
他のキャプチャーソフトでは フラッシュしないのはもちろんマルチモニターでもすぐに処理が開始できます。私はキャプチャーソフトはダミー画面を作成してつくられるものが多いと思っていたのですが、最近になって直接デスクトップ上に書いているので フラッシュしたり処理が速いのかと思い始めました。
何かよりよいキャプチャの方法をご存知かたがいっらしゃいましたらご教授よろしくお願いしたいと思います。
一部訂正です。
>フラッシュしたり処理が速いのかと思い始めました。
フラッシュしなかったり処理が速いのかと思い始めました。
私は以下のようにやっていますが、気になるほどちらつきませんが・・・
procedure TFrmScreen.FormCreate(Sender: TObject);
begin
G_DC := GetWindowDC(0);
end;
procedure TFrmScreen.FormShow(Sender: TObject);
begin
Im.Width := Screen.Width;
Im.Height := Screen.Height;
Im.Picture.Bitmap.Width := Screen.Width;
Im.Picture.Bitmap.Height := Screen.Height;
BitBlt(Im.Picture.Bitmap.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, G_DC, 0, 0, SRCCOPY);
Releasedc(0,G_DC);
end;
deldelさん。ありがとうございます。
deldelさんの方法に変更がしたところ ちらつきもとれました。プラス ダブルバッファと組み合わせることでうまくいきました。
また何かありましたら よろしくお願いします。
ツイート | ![]() |