天天看点

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:下面的内容如何去掉呢?