使用TeeChart v8实现一个游标功能,查资料的时候在网上看到一个帖子,自己尝试了一下,但是遇到很多问题,无法完全实现,于是自己尝试了一个下,最后实现了一个简单的功能。实现环境是TeeChart V8& VS2010;参考了https://www.cnblogs.com/hyd10000/archive/2011/07/10/2102072.html。在OnInitDailog()里面添加如下代码:
m_cTeeChart.GetAspect().SetView3D(FALSE);
m_cTeeChart.AddSeries(0);
m_cTeeChart.GetTools().Add(0);//添加cursor
m_cTeeChart.GetTools().Add(0);
m_cTeeChart.Series(0).FillSampleValues(20);
CToolList toollist;
CTools tool;
toollist = m_cTeeChart.GetTools();//获取工具链
tool = toollist.GetItems(0);//获取工具链中的第一个工具。这里是我添加的是跟随鼠标的十字光标线
curtool1 = (CCursorTool)tool.GetAsTeeCursor();
curtool1.SetFollowMouse(FALSE);
curtool1.GetPen().SetColor(RGB(0,0,255));
curtool1.GetPen().SetWidth(2);
tool = toollist.GetItems(1);
curtool2 = (CCursorTool)tool.GetAsTeeCursor();
curtool2.SetFollowMouse(FALSE);
curtool2.GetPen().SetColor(RGB(255,0,0));
curtool2.GetPen().SetWidth(2);
在头文件中定义:
CCursorTool curtool1;
CCursorTool curtool2;
并为TeeChart控件添加事件:
void CTeeChartMDlg::OnCursorToolChangeTchart1(long Tool, long X, long Y, double XVal, double YVal, long Series, long ValueIndex)
{
// TODO: 在此处添加消息处理程序代码
double x1 = curtool1.GetXVal();
double x2 = curtool2.GetXVal();
double dx = abs(x1-x2);
CString str;
str.Format(_T("%.2f"),dx);
GetDlgItem(IDC_EDITDX)->SetWindowTextW(str);
double y1 = curtool1.GetYVal();
double y2 = curtool2.GetYVal();
double dy = abs(y1 - y2);
str.Format(_T("%.2f"),dy);
GetDlgItem(IDC_EDITDX2)->SetWindowTextW(str);
}