C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[200] [인쇄]빌더 5에서의 폼 인쇄.
고황일 [hwangil] 8684 읽음    2001-10-13 10:50
안냐세요... 항상 도움만 받다가... 드뎌.


윈98에서 폼을 인쇄하기 고생하다가 드뎌 찾아낸 방법입니다.
폼인쇄를 위해 print()문을 사용하여도 빈종이만 나오고
또 GetFormImage()로 폼의 이미지를 받아서 Printer()->Canvas에 저장을 해도
출력이 되지 않을 경우와 Image를 프린터로 인쇄할 경우에 사용하면 유용함니다...

일단 PrintDIB 라는 컴포넌트를 설치 합니다.
다음에 인쇄할 폼에 컴포넌트를 배치 합니다.

간단히 폼을 인쇄하는 소스의 예입니다.

#include <printers.hpp>      // 프린터를 제어하기위해 포함.


#pragma link "PrintDIB"      // PrintDIB 컴포넌트 배치하면 자동으로 생성


void __fastcall TForm1::Button1Click(TObject *Sender)    // 화면상의 버튼을 누르면 인쇄시작
{
        int     target_width  = Printer()->PageWidth;    // 가로 배율을 조정하기 위한 변수 선언
        int     target_height = Printer()->PageHeight;   // 세로 배율을 조정하기 위한 변수 선언

//------ 폼 이미지를 저장하기 위한 비트맵 공간을 확보
        Graphics::TBitmap       *FormImage = new Graphics::TBitmap();
//------ 폼 이미지를 저장
        FormImage = GetFormImage();     //get form image


// 종이 배율에 맞추어 폼 이미지를 조정하기 위한 루틴 (가로나 세로에 꽉차게 인쇄하기 위함.)
        target_width = Printer()->PageWidth;
        target_height = FormImage->Height * (Printer()->PageWidth / FormImage->Width);

        if (target_height > Printer()->PageHeight)
        {
                target_width = FormImage->Width * (Printer()->PageHeight / FormImage->Height);
                target_height = Printer()->PageHeight;
        }
// end of scale compute.


// 프린트 처리부
        Printer()->Title = "Mold parameter print-out";      // 인쇄 관리자에 인쇄 제목이 나오도록..
        Printer()->BeginDoc();                      // 프린트 문서 시작.

        PrintDIB1->StretchDrawDIB(Printer()->Canvas, 0, 0, target_width, target_height, FormImage);
//      ^^ PrintDIB 컴포넌트에서 나오는 함수
//      PrintDIB1->StretchDrawDIB(이미지전송 목적지,         
//                                왼쪽위좌표, 오른쪽위좌표,
//                                왼쪽밑좌표, 오른쪽밑좌표,
//                                원본이미지);


        Printer()->EndDoc();                       // 프린트 문서 끝.

        delete FormImage;                         
}

인쇄를 위해 실제로 사용된 함수는 StretchDrawDIB 밖에는 없습니다.
여러가지로 사용해 봤는데 잘되더군요.. 넘 어렵지도 않구요.
bytamin-c의 홈페이지에서 검색해서 찾은 내용입니다.
그 내용에 의하면 이미지를 프린터에 인쇄할 경우에 사용되는 컴포넌트라고 설명되어 있습니다.

자세한 원문은 http://bcbcaq.bytamin-c.com/CAQs/print_graphics.html 입니다.

+ -

관련 글 리스트
200 [인쇄]빌더 5에서의 폼 인쇄. 고황일 8684 2001/10/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.