|
제가 폼위에 Image와 Edit박스 등을 올려 놓고..
그폼을 GetFormImage()로 받아와서...
그것을 프린트을 할려구 하는데...
프린트가 안돼요..ㅜ.ㅜ
그냥...Image를 찍으면...되는데...
이곳에서 가르쳐준대로 만들어 봤는데...
뭐가 문제지.....
bool __fastcall TForm2::ImagePrint(TCanvas *SendCanvas,TImage *Image,TRect *rect)
{ //Image를 화면이나 용지에 인쇄한다..
BITMAPINFO * lpDIBHdr;
BYTE * lpDIBBits;
unsigned int ImageSize =0;
unsigned int HeaderSize =0;
// Graphics::TBitmap *AssignBitmap = new Graphics::TBitmap();
// AssignBitmap->Assign(Image->Picture->Graphic);
Graphics::TBitmap *AssignBitmap = Form1->GetFormImage();
GetDIBSizes(AssignBitmap->Handle, HeaderSize, ImageSize);
if( HeaderSize ==0 || ImageSize == 0)
{
return false;
}
lpDIBBits = (BYTE *)malloc(ImageSize);
lpDIBHdr = (BITMAPINFO *) malloc(HeaderSize);
if( !GetDIB(AssignBitmap->Handle,
AssignBitmap->Palette,
lpDIBHdr, lpDIBBits) )
{
delete lpDIBBits;
delete lpDIBHdr ;
return false;
}
// Rectangle(Printer()->Canvas->Handle,20,20,200,200);
StretchDIBits(SendCanvas->Handle,
rect->Left, rect->Top,
Printer()->PageWidth,//rect->Right - rect->Left,
Printer()->PageHeight,//rect->Bottom - rect->Top,
0, 0,
AssignBitmap->Width,
AssignBitmap->Height,
lpDIBBits,
lpDIBHdr,
DIB_RGB_COLORS,
SRCCOPY);
free(lpDIBBits);
free(lpDIBHdr );
delete AssignBitmap;
return true; //인쇄성공여부
}
답변 바람니다......^^
|