|
안녕하세요? 개박살입니다..
소스를 보니까 프린트를 보내어 찍는부분이 없네요??
: StretchDIBits(SendCanvas->Handle,
는 프린터 해상도에 이미지를 맞춘거 같구.. ^^ 제가 프린터쪽 API를 해본적이없서리
암튼, 그쪽 함수만 추가시켜주면 되겠군요..
그럼 참고하세용
강재훈 님이 쓰신 글 :
: 제가 폼위에 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; //인쇄성공여부
: }
:
: 답변 바람니다......^^
:
:
:
|