현재 화면을 원하는 크기(100,70)로 매 초 마다 캡쳐를 받으려고 합니다.
그런데, 아래의 방식으로 하면 9x 계열을 OS 에서는 무리없이 돌아가는 것 같은데
nt 게열의 OS 에서는 마우스가 버벅거리는 현상이 발생합니다.
(타이머 혹은 쓰레드 방식으로 모두 해 보았음.)
아래의 방식말고 다른 방법의 캡쳐방식이 또 있는지 고수님들의 조언을 부탁드립니다.
procedure TForm1.Button1Click(Sender: TObject);
var
DeskTopDC: HDc;
DeskTopCanvas: TCanvas;
DeskTopRect: TRect;
BitmapRect: TRect;
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
try
BitMap.Width := 100; BitMap.Height := 70;
BitmapRect := Rect(0, 0, 100, 70);
DeskTopDC := GetWindowDC(GetDeskTopWindow);
DeskTopCanvas := TCanvas.Create;
try
DeskTopCanvas.Handle := DeskTopDC;
DeskTopRect := Rect(0, 0, Screen.Width, Screen.Height);
Bitmap.Canvas.CopyRect(BitmapRect,
DeskTopCanvas,
DeskTopRect);
Image1.Picture.Assign(Bitmap);
finally
ReleaseDC(GetDeskTopWindow, DeskTopDC);
DeskTopCanvas.Free;
end;
finally
Bitmap.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp : TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.Width := 100; Bmp.Height := 70;
StretchBlt(Bmp.Canvas.Handle,
0, 0,
Bmp.Width, Bmp.Height,
GetDC(0),
0, 0,
Screen.Width, Screen.Height,
SRCCOPY);
Image1.Picture.Assign(Bmp);
finally
Bmp.Free;
end;
end;
TImage.Canvas.StretchDraw() 의 방법을 이용해서 캡쳐 후 축소도 해보았는데 마찬가지임.