天天看點

Teechart顯示:按照時間軸自右向左推移(VC6.0實作)

源代碼(采用A1.b,A2.b方法實作):

http://download.csdn.net/detail/zj060607/6737403

解決兩個問題:

1.      時間軸如何實作

2.      橫軸如何自右向左移動

A1:時間軸

方法a. 在label字元串顯示

CTime t = CTime::GetCurrentTime();
      m_chartTime.Series(0).AddXY(fTime,flY,t.Format("%H:%M:%S"),0);
           

  缺點:MasksTip預設顯示X軸(fTime)資料,而不是時間,需要做如下設定。

//MasksTip     
       m_chartTime.GetTools().Add(8);   //ToolList添加 tcMarksTip = 8
       m_chartTime.GetTools().GetItems(0).GetAsMarksTip().SetMouseAction(mtmMove);
       m_chartTime.GetTools().GetItems(0).GetAsMarksTip().SetDelay(250);
       m_chartTime.GetTools().GetItems(0).GetAsMarksTip().SetStyle(smsLabelValue);//預設是smsXY
           
Teechart顯示:按照時間軸自右向左推移(VC6.0實作)

  方法b:設定x軸為時間類型,主要分為兩步。參見[1]P187

1.      設定DateTime屬性為True,并設定時間格式:

m_chartTime.Series(0).GetXValues().SetDateTime(TRUE);
m_chartTime.GetAxis().GetBottom().GetLabels().SetDateTimeFormat("hh:mm:ss");
           

2.      使用序列的AddXY增加一個點的值

m_chartTime.Series(0).AddXY(dblX,dblY,"",0);

Teechart顯示:按照時間軸自右向左推移(VC6.0實作)

A2:橫軸自右向左移動

  方法a..滾動函數

       m_chartTime.GetAxis().GetBottom().Scroll(1.0,TRUE);

步驟:

1.初始化:

m_chartTime.GetAxis().GetBottom().SetAutomatic(TRUE);
m_chartTime.GetAxis().GetBottom().SetMinMax(0,10);
           

       2.onTimer隔一段時間改一下橫軸

staticdouble s_dbX=10.0;
       s_dbX=s_dbX+1;
       dblX= s_dbX;
       m_chartTime.Series(0).AddXY(dblX,dblY,curTime.Format("%M:%S"),0);
       m_chartTime.GetAxis().GetBottom().Scroll(1.0,TRUE);
           

方法b.設定最大值,最小值

       m_chartTime.GetAxis().GetBottom().SetMinMax(dblX-50/84600.,dblX);

步驟:

1.初始化:

COleDateTimeCurTime=COleDateTime::GetCurrentTime();
      //最小值(dTime-50s),最大值dTimes
      m_chartTime.GetAxis().GetBottom().SetMinMax(CurTime.m_dt-50/84600.,CurTime.m_dt); 
           

2.onTimer隔一段時間改一下橫軸

double dblX;
       COleDateTimecurTime = COleDateTime::GetCurrentTime();
       dblX= curTime.m_dt;
       srand((unsignedlong)time(0));
       doubledblY = rand()%20;
       m_chartTime.Series(0).AddXY(dblX,dblY,curTime.Format("%M:%S"),0);
       m_chartTime.GetAxis().GetBottom().SetMinMax(dblX-50/84600.,dblX);
           

reference:

[1].Teechart應用技術詳解

PS:下面的内容如何去掉呢?