請問怎樣抓螢幕畫面較有效率? |
尚未結案
|
ymkang
一般會員 發表:9 回覆:10 積分:3 註冊:2002-08-29 發送簡訊給我 |
請問如何即時的監看本機目前的螢幕畫面?
小弟目前的做法是放了一個Timer和Image
然後做了如下的事情:
procedure TForm1.FormCreate(Sender: TObject);
begin
ScreenCanvas := TCanvas.Create;
end; procedure TForm1.Timer1Timer(Sender: TObject);
begin
ScreenCanvas.Handle := GetDC(0);//ScreenCanvas是一個全域的TCanvas物件
Image1.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), ScreenCanvas,Rect(0, 0, Screen.Width, Screen.Height)); end; 然後Timer的Interval設成100
這樣做起來感覺似乎不是很有效率(有時候螢幕會閃動)
不知各位先進是否能提供有效率的做法
謝謝
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
procedure TForm1.FormCreate(Sender: TObject);
begin
ScreenCanvas := TCanvas.Create;
ScreenCanvas.Handle := GetDC(0);
end; procedure TForm1.Timer1Timer(Sender: TObject);
begin
//螢幕會閃動 是因為 image 重畫時會呼叫 清空背景 所以會造成 閃動 Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), ScreenCanvas,Rect(0, 0, Screen.Width, Screen.Height)); end; 發表人 - cmf 於 2003/02/13 11:31:17
------
︿︿ |
ymkang
一般會員 發表:9 回覆:10 積分:3 註冊:2002-08-29 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
請參考下列 再自行修改 unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs; type TDrawScreen= class(TThread)
private
{ Private declarations }
procedure Draw; protected
procedure Execute; override;
public end; TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FD:TDrawScreen;
Procedure WMEraseBkgnd(var message:TMessage); message WM_ERASEBKGND; public
{ Public declarations }
ScreenCanvas:TCanvas;
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TDrawScreen.Execute;
begin
Synchronize(Draw);
end; procedure TDrawScreen.Draw;
begin Form1.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height),Form1.ScreenCanvas,Rect(0, 0, Screen.Width, Screen.Height)); end; procedure TForm1.FormCreate(Sender: TObject);
begin
ScreenCanvas := TCanvas.Create;
ScreenCanvas.Handle := GetDC(0);
FD:=TDrawScreen.Create(FALSE);
end; Procedure TForm1.WMEraseBkgnd(var message:TMessage);
begin
message.Result:=1;
end; end.
------
︿︿ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |