C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[18941] Re:graphics32 Component 에서 Draw문제 (바탕화면에서 고속으로 그림 가져오기..)
하느리 [] 1240 읽음    2002-05-28 13:18
흠날리~ 제가 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를 이용해서 바탕화면을 캡쳐한 후 저장하고 싶습니다.
: 그리고 아주 빠른 속도로 하고싶습니다. 저장하는 시간은 문제가 되지 않지만
: 바탕화면에서 저장할 수 있는 상태까지 되는데 시간이 너무 오래 걸리더군요
: 빠르게 할수 있는 방법이나 위에 설명한 문제에 대한 답을 하시는 분은 해결책좀 알려주시면 감사하겠습니다.
:
:
:                      

+ -

관련 글 리스트
18932 graphics32 Component 에서 Draw문제 (바탕화면에서 고속으로 그림 가져오기..) 김정모 1165 2002/05/28
18941     Re:graphics32 Component 에서 Draw문제 (바탕화면에서 고속으로 그림 가져오기..) 하느리 1240 2002/05/28
18944         Re:Re:graphics32 Component 에서 Draw문제 (바탕화면에서 고속으로 그림 가져오기..) 김정모 1086 2002/05/28
18953             Re:Re:Re:graphics32 Component 에서 Draw문제 (바탕화면에서 고속으로 그림 가져오기..) 유영인.Chris 1554 2002/05/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.