|
오래된 질문이기는 한데...
참고로 제가 사용하는 Form에 대한 Bitmap으로의 Capture입니다.
HWND hwnd = FormImage->Handle;
if(hwnd)
{
HDC dc = ::GetWindowDC(hwnd);
Graphics::TCanvas *pCanvas = new Graphics::TCanvas;
pCanvas->Handle = dc;
TRect rect = pCanvas->ClipRect;
TImage *pImg = new TImage(FormImage);
pImg->Picture->Bitmap->Width = rect.Width();
pImg->Picture->Bitmap->Height = rect.Height();
pImg->Picture->Bitmap->Canvas->CopyRect(rect, pCanvas, rect);
pImg->Picture->SaveToFile("capture.bmp");
delete pImg;
delete pCanvas;
::ReleaseDC(hwnd, dc);
}
대충 위와 같이 만들어서 bitmap 파일을 만들어서 사용합니다.
*^^* -- 너무 쉬운거를 어려운것 처럼 했나요??? 쩝...
남정태 님이 쓰신 글 :
: "정보문화사 Borland C++ Builder Programming Bible" 책에 있는 내용을 써서 캡쳐는 되었는데요,,,
: 제가 그림에 표시한 부분만 캡쳐를 하고 싶습니다.
: 여기서 이 특정영역을 찾아서 캡쳐를 하면 될 것 같은데 방법을 모르겠습니다.
: 보시는 분은 방법 좀 알려주세요.
:
: 책에 있는 소스 그대롭니다. 바꾼 건 폼이랑, 클래스 이름밖에 없습니다.
: HWND cphandle = FindWindow("TAtrialForm", NULL);
: if (cphandle) {
: HDC dc = GetWindowDC(cphandle);
: Graphics::TCanvas *ScreenCanvas = new Graphics::TCanvas;
: ScreenCanvas->Handle = dc;
:
: TRect rect = ScreenCanvas->ClipRect;
: //rect.Right = rect.Right; - rect.Left;
: //rect.Bottom = rect.Bottom; - rect.Top;
: //rect.Top = 0;
: //rect.Left = 0;
: CaptureForm->Width = rect.Right+7;
: CaptureForm->Height = rect.Height()+7;
: CaptureForm->Image1->Picture->Bitmap->Width = rect.Right;
: CaptureForm->Image1->Picture->Bitmap->Height = rect.Height();
: CaptureForm->Image1->Picture->Bitmap->Canvas->CopyRect(rect, ScreenCanvas, ScreenCanvas->ClipRect);
: delete ScreenCanvas;
: ReleaseDC(cphandle, dc);
: }
:
: 그리고 Image 컨트롤의 그림을 파일로 저장하려면 어떻게 하면 되나요?
:
|