|
해당 소스는..
현재 활성화되어있는 윈도창의 핸들을 얻어와서
GetWindowRect(GetForegroundWindow(),&r);
해당 윈도의 화면 캡춰 한 후,
가상의 캔버스를 생성하여 거기에 캡춰한 내용을 전달해놓습니다.
그 후,
Image 컴포넌트의 크기를 캡춰한 크기에 맞도록 설정 해놓고
이미지의 비트맵 캔버스에 가상의 캔버스의 내용을 복사합니다.'
Image1->Picture->Bitmap->Canvas->CopyRect(
: Rect(0,0,Image1->Width,Image1->Height),MyCanvas,
: Rect(0,0,Image1->Width,Image1->Height));
그후 사용완료된 가상의 캔버스는 메모리에서 해제하고
캡춰에 사용되었던 메모리공간도 비워줍니다...
소스를 그대로 말로 이해되시도록 풀어보았는데..
이해하셨을련지 모르겠네요..
그럼..
기섭 님이 쓰신 글 :
:
:
: void __fastcall TForm1::Image1Click(TObject *Sender)
: {
: HDC dc;
: RECT r;
: GetWindowRect(GetForegroundWindow(),&r);
: dc = GetWindowDC(GetForegroundWindow());
: Graphics::TCanvas *MyCanvas = new Graphics::TCanvas;
: MyCanvas->Handle = dc;
: Image1->Width = r.right - r.left;
: Image1->Height = r.bottom - r.top;
: Image1->Picture->Bitmap->Width = r.right - r.left;
: Image1->Picture->Bitmap->Height = r.bottom - r.top;
: Image1->Picture->Bitmap->Canvas->CopyRect(
: Rect(0,0,Image1->Width,Image1->Height),MyCanvas,
: Rect(0,0,Image1->Width,Image1->Height));
: delete MyCanvas;
: ReleaseDC(NULL,dc);
:
: 여기돌아다니다가 캡쳐하는 소스를 구했는데... 해석이 안되네여...
: 조금만이라두 해석좀 부탁드립니다..
:
|