BitBlt에서 Canvas->Handle 을 잘못 주었습니다.
//Form의 전체 영역 캡쳐
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Graphics::TBitmap *p = new Graphics::TBitmap;
p->Width = Form1->Width;
p->Height = Form1->Height;
p->PixelFormat = pf24bit;
BitBlt(p->Canvas->Handle,0,0,Form1->Width,Form1->Height, GetDC(0),Form1->Left,Form1->Top,cmSrcCopy);
p->SaveToFile("c:\\test_form.bmp");
delete p ;
}
//Form의 client영역만 캡쳐
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Graphics::TBitmap *p=GetFormImage();
p->SaveToFile("c:\\test_form2.bmp");
delete p ;
}
그럼...
linuxman 님이 쓰신 글 :
: 현재의 form을 통째로 이미지로 저장하려는데...
: 저장은 되기는 되는데... 원치 않는 from 밖의 바탕화면까지
: 저장되는데.. 왜 이런 현상이 일어나는지요?
: void __fastcall TForm1::Button8Click(TObject *Sender)
: {
: Graphics::TBitmap *p = new Graphics::TBitmap;
: HWND B = FindWindow ("TForm1", NULL );
: if ( B )
: {
: p->Width = Form1->Width;
: p->Height = Form1->Height;
: p->PixelFormat = pf24bit;
: BitBlt(p->Canvas->Handle,0,0,Form1->Width,Form1->Height,
: Canvas->Handle ,Form1->Left,Form1->Top,cmSrcCopy);
:
:
: }
: p->SaveToFile("c:\\test.bmp");
: delete p ;
: }