|
강병식 님이 쓰신 글 :
: 조언해 주신대로 PerformanceGraph로 그려보았는데 일단 그래프를 그려보니 데이타가 32000개나
: 되니 출력되는 속도가 너무느려 다 끝나는데 10분 이상이 걸리는거 같군요. 이번엔 TChart를
: 이용해서 개선해 보려합니다. 사용해 보니 상당히 유용하더군요. layout은 비주얼툴들을 이용해
: 근사하게 해 놓았는데 출력하는 메소드를 잘 모르겠네요. Help를 보아도 코딩이 파스칼로
: 되어있더군요..이런... 파일안에 데이타를 끄집어 내는법은 조언해 주신대로 스트링 조작법을
: 이용하니 편리하고 쉽게 되더군요. 감사합니다. TChart안에 데이타를 가지고 어떻게 그래프를
: 출력할수 있을까요?
: 그리고 TChart밑에 Scrollbar를 첨가해서 그래프를 좌우로 스크롤하고 싶은데 어떡하죠?
:
: 즐거운 명절되세요.. 강병식..
임펠리테리입니다.
PerformanceGraph는 원래 주기적으로 입력되는 데이터를 처리할 때 사용합니다. 이전번에도 비슷한
말씀을 드렸죠? 만약 지금 하시려는 작업이 미리 준비된 데이터를 가지고 그래프를 그리려는
것이라면 PerformanceGraph가 아닌 차트 계열의 컴퍼넌트를 사용해야 합니다.
빌더에 디폴트로 포함된 차트 컴퍼넌트는 TeeChart와 ChartFx가 있는데, 이중 ChartFx는 샘플 ocx
로서 포함된만큼 헬프도 없고 사용법이 복잡합니다. 그래서 TeeChart가 적당하죠.
자.. 그럼 이제 TeeChart(TChart의 정식이름)를 이용해서 그림을 그려봅시다.
TChart의 실제 데이터는 모두 Series라고 불리는 객체에 저장되며, 하나의 차트는 여러개의 시리즈
를 가질 수 있습니다. TChart는 디비작업에는 아주 편하게 설계되어 있어서, 원하는 데이터셋을
단순히 시리즈에 연결해주기만 하면 됩니다. 하지만 디비가 아닌 코딩에 의한 데이터를 그려주기
위해서는 시리즈의 AddXY() 메소드를 이용해서 모든 점들의 데이터를 직접 입력해주어야 합니다.
이 함수의 첫번째와 두번째 인자는 각각 새로 추가할 데이터의 X, Y 값입니다. 세번째는 추가될
데이터의 레이블로서, 시리즈의 마크를 visible로 했을 때 각 점들에 붙을 레이블들의 값입니다.
네번째는 물론 점의 색깔이구요.
가장 간단한 예는 다음과 같습니다.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i=0; i<100; i++)
Chart1->Series[0]->AddXY(i, i*2, "", clYellow);
}
물론 디자인타임에서나 혹은 적어도 이 코드를 실행하기 전에 차트에는 시리즈가 하나 이상 있어야
합니다.
그럼 참고하시길...
|