처음에는 Rave디자이너를 이용해서 그렸었는데 하다보니 디자이너는 처음 발을 넣을때는 친근한데 아무래도 자유자재로 제어하기가 까다롭더군요. 그래서 코딩방식으로 그리는 방법을 알아보았습니다.
핵심은 티차트와 레이브를 연결해주는 중간다리가 필요한데. TMetafile 이었습니다.
TChart 의 CeateMetafile() 함수로 메타파일을 생성하고
TBaseReport 의 StretchDraw() 함수로 메타파일을 그려주면 됩니다.
비트맵이 아닌 메타파일 이므로 미리보기 또는 출력시 Aliasing현상이 생기지 않습니다.
C++빌더 2006에서 테스트했습니다.
void __fastcall TForm4::RvSystem1Print(TObject *Sender)
{
TBaseReport *report = (TBaseReport *)Sender;
report->Ellipse(0, 0, 3, 3);
report->GotoXY(3, 3);
report->Print("TeeChart on RaveReport");
// TeeCreateMetafile() 함수로 TChart의 메타파일을 생성한다.
TMetafile *meta = Chart1->TeeCreateMetafile(true, Chart1->GetRectangle());
// TBaseReport의 기본 길이 단위는 inch이지만
// StretchDraw함수는 pixel단위이다.
// 그래서 인치치수에 dpi를 곱해주어야 한다.
double xdpi = report->XDPI;
double ydpi = report->YDPI;
TRect drawRect(1*xdpi, 4*ydpi, 7*xdpi, 8*xdpi);
// StretchDraw() 함수를 이용하여 메타파일을 그린다.
report->StretchDraw(drawRect, meta);
delete meta;
}
//---------------------------------------------------------------------------
|