源代碼(采用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
方法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);
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:下面的内容如何去掉呢?