|
답변감사합니다. 하지만 말씀하신 방법은 이미 알고 있는 내용이구요
그저 한번 정도 가져오기에는 무난하지만.. 여러번 반복적으로 가져오려구 하면
무쟈게 느리다는것을 아실 수 있으실껍니다.
좀더 빠른 방법이 없을까요?
하느리 님이 쓰신 글 :
: 흠날리~ 제가 graphics32 컴포넌트를 사용해 보지를 않아서 그냥 제가 만들어서 사용하는 방법을 올립니다. 제가 사용할 때는 그리 느리지 않았는 것 같은데, 이것보다 더 빠른 것을 원하신다면.... (애구, 할 말이 없네요. -_-a)
:
: //---------------------------------------------------------------------------
: // 화면(CRT)을 그림으로 읽어오는 함수
: // bmp : 화면을 받을 클래스
: // area : 캡쳐할 영역
: // width : 받아올 화면의 너비
: // height : 〃 높이
: void __fastcall GetCRT (Graphics::TBitmap *bmp, TRect& area, int width, int height)
: {
: bmp->Width = width;
: bmp->Height = height;
: HWND desktop = GetDesktopWindow ();
: HDC dt_dc = GetDC (desktop);
: SetStretchBltMode (bmp->Canvas->Handle, STRETCH_HALFTONE);
: StretchBlt (bmp->Canvas->Handle, 0,0, width, height,
: dt_dc, area.Left, area.Top, area.Right - area.Left, area.Bottom - area.Top, SRCCOPY);
: ReleaseDC (desktop, dt_dc);
: }
: //---------------------------------------------------------------------------
: // 사용예
: //---------------------------------------------------------------------------
: // 아래 예제는 화면전체를 320*240 크기로 가져 오는 것입니다.
: // 실제 사이즈로 가져 오실려면 320 대신 Screen->Width, 240 대신 Screen->Height를 인자로 GetCRT를 호출하시면 됩니다.
:
: Graphics::TBitmap *bmp = new Graphics::TBitmap ();
: TRect area = TRect (0, 0, Screen->Width, Screen->Height); // 받아올 화면의 영역
: GetCRT (bmp, area, 320, 240);
: bmp->SaveToFile ("바탕화면.bmp");
: bmp->FreeImage ();
: delete bmp;
: bmp = NULL;
: //---------------------------------------------------------------------------
:
:
:
:
:
:
:
: 김정모 님이 쓰신 글 :
: : Image1->Bitmap->Draw(rect, rect, DesktopDC); <-- 이렇게 하면 컴파일시 에러가 발생하는군요
: :
: :
: : 배경화면에서 그림을 가져오려구 하는데
: : TImage에서는 그냥 bitblt 함수에 Image->Canvas를 넣어주었더니 잘 가져왔습니다.
: : 하지만 속도가 너무 느려서 Graphics32 Component는 좀 빠를까해서
: : 바꾸려고 합니다. 그런데 Graphics32 Component에서는
: : TImage32 Component를 사용하여 바탕화면을 가져오려구 bitblt를 했는데
: : Canvas->Handle을 주니까 잘 가져오긴 가져오는데 그저 Canvas에 올려놓았을뿐
: : 제가 저장할수 가 없었습니다.
: : 좀 이해가 안가실까봐 다시 설명드리면
: :
: : 저는 Graphics32 Component를 이용해서 바탕화면을 캡쳐한 후 저장하고 싶습니다.
: : 그리고 아주 빠른 속도로 하고싶습니다. 저장하는 시간은 문제가 되지 않지만
: : 바탕화면에서 저장할 수 있는 상태까지 되는데 시간이 너무 오래 걸리더군요
: : 빠르게 할수 있는 방법이나 위에 설명한 문제에 대한 답을 하시는 분은 해결책좀 알려주시면 감사하겠습니다.
: :
: :
: :
|