감사합니다.
10분더 안걸릴정도로 쉬운 문제였네요 ㅜㅜ
벌써 빌더를 접한지 2개월이 되어 가는데 아직도 어렵기만 하네요
빌더 님이 쓰신 글 :
: 쌩조 님이 쓰신 글 :
: : Teechart를 이용해서 오실로스코가 가지고 있는 Time/div 효과를 만들어 낼려고 하는데
: : 도대체 어떻게 접근해야 할지를 모르겠습니다.
: : 몇일째 모니터만 뚫어 지게 보고 있습니다 ㅜㅜ
:
:
: 오실로스코프의 Time/div 기능을 복잡하게 생각할 것 없습니다.
:
: TrackBar 콘트롤을 센터값을 100으로, 최대값을 200으로 하면, 센터에 있을 때 스케일 Factor를
: 1.0으로 보면 되니까 스케일 처리가 간단해 지겠죠.
:
: TChart 콘트롤의 BottomAxis 프로퍼티의 Max 값에 TrackBar의 스케일 Factor 값을 곱해주면
: 그것으로 오실로스코프의 Time/div 기능이 구현 됩니다.
:
:
:
: TChart 콘트롤 자체가 리얼타임 동작에 적합하도록 구현되어 있는 것도 아니고, 일일이 Series
: 데이타 요소 하나하나 마다 스케일 Factor를 계산해서 처리하는 방법은 상당히 비효율적 이니까
: 위에 언급한 방식으로 해보세요. 코드는 다음과 같은 식으로 처리하면 되겠죠.
:
:
:
: void __fastcall TForm1::TrackBar1Change(TObject *Sender)
: {
: static int prevPos = 100;
: static bool first_time = true;
: static double Min, Max;
:
: int newPos = this->TrackBar1->Position;
:
: if( first_time ) {
: Min = Chart1->BottomAxis->Minimum;
: Max = Chart1->BottomAxis->Maximum;
: first_time = false;
: }
:
: if( prevPos != newPos )
: {
: prevPos = newPos;
: Chart1->BottomAxis->SetMinMax(Min, Max * newPos /100.0);
: }
: }
:
:
: 코드를 구현하는데 10분도 안 걸릴거에요. 컴파일한 실행파일 같이 첨부합니다.
|