장기복 님이 쓰신 글 :
: 안녕하십니까? 처음 질문을 올리네요.
:
: 그래프를 그리기 위해 TChart compononet를 이용하고 있습니다.
: 다 잘되는데, 한가지 안되는게 있어서 질문드립니다.
: 뭐냐하면 그래프의 y축에 나오는 숫자의 포맷을 임의로 변경할 수가 없습니다.
: 숫자의 단위가 커서 지수형태로 하고 싶은데...
:
: 도와주시기 바랍니다.
임펠리테리입니다.
TChart의 OnGetAxisLabel 이벤트 핸들러를 작성해서 직접 그려질 Label들의 텍스트를 조작하면 됩니다. 이 이벤트는 차트의 Axis의 Label들의 값을 알아내려고 할 때마다 발생하는 이벤트로서, 여기서 직접 텍스트값을 임의로 바꿔줄 수 있습니다. 예를 들어서, 다음과 같이,
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i=0; i<10000; i++)
Chart1->Series[0]->AddXY(i, i*2, "", clYellow);
}
이렇게 x값이 0에서부터 10000까지 주루룩 증가하는 차트모양을 만든다고 합시다. 그러면 y값은 위의 연산에 따라 최대 20000까지 증가하겠지요? 그런데 최대값이 10000이나 나오는 단위는 너무 번거로와서, 단위를 1000단위로 하고, 최대로 나타날 Label 텍스트를 20까지로 하고 싶다고 하면? (사실은 19까지 나타납니다.)
이때는 다음과 같이 코딩하면 됩니다.
void __fastcall TForm1::Chart1GetAxisLabel(TChartAxis *Sender,
TChartSeries *Series, int ValueIndex, AnsiString &LabelText)
{
if(Sender == Chart1->LeftAxis)
{
int Val = StrToIntDef(LabelText, 0);
Val = Val / 1000;
LabelText = IntToStr(Val);
}
}
지수형으로 문자열을 만드는 알고리즘은.. 직접 작성하셔도 되겠지요?
그럼 참고하시길...
|