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

C++빌더 FAQ
C++Builder Programming FAQ
[82] TChart 에 추가로 글자를 넣어 프린트하려면?
박지훈.임프 [cbuilder] 15216 읽음    2005-10-06 17:12
질문 김시환님

Chart에 그래프가 그려지는 조건을 넣어서 프린트를 하려고
합니다.
Title에는 그래프의 제목만 들어가고 특별한 글씨를
런타임시에는 쓸수가 없더군요...

그래프가 그려지는 조건은 TextBox나 CSpinEdit에서
받아서 처리합니다.
여기서 받은 조건을 TChart에 포함시켜서 그래프를 그리고
이것을 같이 프린트 하고자 합니다.


답변 박지훈.임프님

TChart 의 Print 메소드는 그냥 무식하게 현재의 차트모양을 인쇄할 뿐, 거기에 다른
내용을 추가하거나 할 수 있는 방법이 전혀 없습니다.
원하시는대로 부가적인 내용을 추가로 인쇄하려면, Print() 메소드가 아니라
PrintPartialCanvas() 메소드를 사용하셔야 합니다. 이 메소드를 사용하면
이미 인쇄중인 인쇄작업 중간에 차트를 인쇄할 수 있습니다. 먼저 TPrinter객체로 인쇄를 시작하고,
차트보다 먼저 인쇄될 내용들을 TPrinter->Canvas에 써넣고, PrintPartialCanvas()
메소드로 차트를 그리고, 나머지 차트보다 이후에 나올 내용을 인쇄하면 됩니다. 그런 후에
EndDoc() 하면 실제로 인쇄된 내용이 나오죠.

http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=1730


답변 이종빈님

제가 사용했던 코드입니다.. 프로퍼티나 메소드는 헬프를 참고하시구여..
//-----------------------------------------------------------------------------------
// 아래와 같이 프린트 됩니다..
//-----------------------------------------------------------------------------------
//
//                       [ Center Title ]
//
//                          Chart graph
//
//    [ Left Footer ]                           [Right Footer]
//
//-----------------------------------------------------------------------------------
    int        w, h, unitX, unitY, txtWidth;
    String    str;
    TRect    rc;

    // Chart 설정
    Chart1->PrintProportional = false; Chart1->PrintResolution = -100;

    // printer 설정
    Printer()->Canvas->Font->Name = "MS Sans Serif";
    Printer()->Canvas->Font->Size = 8;
    Printer()->Canvas->Font->Style = TFontStyles();
    Printer()->Orientation = Printers::poLandscape;
    Printer()->BeginDoc();
    try {
        w = Printer()->PageWidth; h = Printer()->PageHeight;
        unitX = w / 100; unitY = h / 100;

        // center titile
        str = "[ Center Title ]";
        txtWidth = Printer()->Canvas->TextWidth(str);
        Printer()->Canvas->TextOut(w/2 - txtWidth/2, 2*unitY, str);

        // left footer
        str = "[ Left Footer ]";
        Printer()->Canvas->TextOut(2*unitX, h - 2*unitY, str);

        // right footer
        str = "[ Right Footer ]";
        txtWidth = Printer()->Canvas->TextWidth(str);
        Printer()->Canvas->TextOut(w - 2*unitX - txtWidth, h - 2*unitY, str);

        // Print Chart
        rc = TRect(2*unitX, 4*unitY, w - 2*unitX, h - 4*unitY);
        Chart1->PrintPartialCanvas(Printer()->Canvas, rc);
    }
    __finally {
        Printer()->EndDoc();
    }
//-----------------------------------------------------------------------------------

http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=20559

+ -

관련 글 리스트
82 TChart 에 추가로 글자를 넣어 프린트하려면? 박지훈.임프 15216 2005/10/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.