본문 바로가기

Delphi/꿀팁

윈도우 화면 캡쳐하기

방법1

procedure Capture;

var

TempBitmap : TBitmap;

hHandle : HWND;

begin

TempBitmap := TBitmap.Create;

  try

TempBitmap.PixelFormat := pf32bit;

TempBitmap.Width := 100;

TempBitmap.Height := 100;


    hHandle := GetWindowDC(GetDeskTopWindow); //윈도우 화면의 핸들을 가져옵니다.

    BitBlt(TempBitmap.Canvas.Handle, 00TempCapture.WidthTempCapture.Height, hHandle, 00SRCCOPY);

    //2~4번째 파라미터 : TempBitmap에 이미지가 복사될 위치와 크기를 정합니다.

    //7~8번째 파라미터 : 윈도우 화면에서 복사를 시작할 위치를 정합니다.

    //9번째 파라미터 : 복사방식을 정합니다.

    //참조 -> https://docs.microsoft.com/en-us/windows/desktop/api/wingdi/nf-wingdi-bitblt


    ReleaseDC(0, hHandle);

  finally

TempBitmap.Free;

  end;

end;

방법2

procedure Capture;

var

  c : TCanvas;

  r : TRect;

  bmp : TBitmap;

begin

  bmp := TBitmap.Create;

  c := TCanvas.Create;


  try

    c.Handle := GetWindowDC(GetDesktopWindow);


    bmp.PixelFormat := pf32bit;


    r := Rect(0, 0, Screen.Width, Screen.Height);


    bmp.Width := Screen.Width;

    bmp.Height := Screen.Height;


    bmp.Canvas.CopyRect(r, c, r);

    ReleaseDC(0, c.Handle);

  finally

    c.Free;

    bmp.Free;

  end;

end;


반응형