안녕하세요. 레조입니다.
(TChart Shift 쉬프트 이동)
저도 비슷한 기능을 구현할 일이 있어서 검색하다가 이 글을 보게 되었습니다.
혹시 저처럼 검색해서 이곳에 오시는 분들을 위해;; 간단히 남겨보겠습니다.
TChart의 시리즈내에 리스트가 있는데 그 리스트의 개별 값에 접근하여 다음 값을 앞으로 옮겨옵니다.
그리고 마지막 값은 최신 값으로 채워넣으면 잘 돌아가네요.
타이머에 아래처럼 OnTime 이벤트에 넣어서 테스트해보세요.
TChart 크기는 가로 1000, 세로 8 입니다.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int iCount = Chart1->SeriesList->Items[0]->Count();
static int iElapsed = 0;
if( iCount < 1000 )
{
Chart1->SeriesList->Items[0]->AddXY( iElapsed, sin(iElapsed*0.01)*3 + 4, L"GG", clBlue );
}
else
{
for( int i = 0; i < 999; i++ )
{
double dValue = Chart1->SeriesList->Items[0]->MandatoryValueList->Value[i+1];
Chart1->SeriesList->Items[0]->MandatoryValueList->Value[i] = dValue;
}
Chart1->SeriesList->Items[0]->MandatoryValueList->Value[999] = sin(iElapsed*0.01)*3 + 4;
Chart1->Invalidate();
Application->ProcessMessages();
}
Label1->Caption = iElapsed++;
}
앙마 님이 쓰신 글 :
: TChart에서..Chart를 처음 쓰다보니..질문할게 많군요..
:
: x축 데이터가..Timer에 연동으로 ..20초 동안..1초에 데이터 하나를 뿌리는식으로 동작하는데..20초 뒤에..각각의 축을 하나씩 밀려고 합니다. 20을 19로 ..19를 18로..맨앞에 데이터는 지우고요..일명 쉬프트인데요..방법좀..여기 Q&A에 답변을 응용해보려했는데..잘 이해가 안돼네요..자세하게 좀 알려주세요..
|