|
네, 당근 예전크기 그대로 저장이 되져.
화면상에 보일 때만 크기를 조정해서 보여 주는 것이기 때문이져.
아래는 제가 데스크탑화면을 캡쳐하기 위해 만든 함수입니다.
보시면 아시겠지만 이를 조금 수정하면 원하는 크기로 저장하실 수 있을 것입니다.
수정하셔야 하는 부분은
HWND desktop = GetDesktopWindow ();
이걸
HWND desktop = Form1->Handle;
로 바꿔주시고, G32콤포넌트가 디스플레이되는 영역을 area 안에 넣고, 받아올 크기를 width, height에 넣어 주시면 됩니다.
//---------------------------------------------------------------------------
// 화면(CRT)을 그림으로 읽어오는 함수
// bmp : 화면을 받을 클래스
// area : 그림으로 받아올 화면 영역
// width : 받아올 화면의 너비
// height : 〃 높이
void __fastcall GetCRT (Graphics::TBitmap *bmp, TRect& area, int width, int height)
{
bmp->Width = width;
bmp->Height = height;
/*
int col_num = GetCRTColorBit ();
if ( col_num == 4 ) bmp->PixelFormat = pf4bit;
else if ( col_num >= 16 ) bmp->PixelFormat = pf16bit;
else bmp->PixelFormat = pf8bit;
*/
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);
// dt_dc, 0,0, Screen->Width, Screen->Height, SRCCOPY);
ReleaseDC (desktop, dt_dc);
}
//---------------------------------------------------------------------------
h1800 님이 쓰신 글 :
: 안녕하세요? ^^;
:
: g32 콤포넌트에서 보면~
: Image32 개체의 width나 height 정해주고..
: scalemode만 정해주면...
: 알아서 resize를 해주잖아요..
:
: 근데~
: Image32 안의 Bitmap을 저장한다거나 하면..
:
: bitmap은 예전 크기 그대로 있더라구요...
:
: 화면 상에 resize 되어 있는 이미지를..
: 저장 할 수 있는 방법은 없나 해서 질문 올립니다...
:
: 따로 resize만 하는 모듈을 구현해야 하는 건가요? --?
:
:
|