TeeChart(2)

 

介绍

TeeChart Pro是一款提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供选择。提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供您选择。提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供选择,TeeChart还包括一个强大的、完整的编辑对话框,几乎可用于每个组件和子组件,允许你快速的设计复杂图表应用程序。图表编辑器通过TeeCommander组件进一步得到增强,它提供一次点击访问图表编辑器和共同特征。

 

正文

由于前段时间在实现一个项目中需要进行很多的历史信息的统计,尤其在曲线分析的功能设计的时候,客户对这块的功能要求多,需要能够对历史记录的点的信息进行多时段的查询.(历史记录信息采取1分钟保存一个点的方法),且需要对局部进行分析,在综合了很多曲线控件和一些别的实现方法后,决定采用TeeChart控件实现.在搜索了网络上面关于这个控件VC环境使用的方法后没有发现一个完整的控件使用工程,于是在配合帮助文档和网络信息后完成了曲线分析的开发,现将开发经验分享如下:希望对那些寻求相关信息的人有帮助

    首先启动VC建立一个基于对话框程序的工程(如果建立SDI工程也可以,不过要对控件进行动态创建等工作实在太麻烦了),然后Insert ActiveX Controls->选择TeeChart控件加入到工程中间.然后通过classWizard定义控件变量.这时编译器会自动加载一系列的控件相关的类到程序中间来.

    然后打开曲线配置属性,在Series属性页加入两条fastline曲线(见下图)

定位到Tools属性页,加入一些相关的Tools(见下图)

准备工作完成了,我们现在开始编写加入程序数据方法编程了,这里采用加入随机数的方法(0-300的随机数)

#define GetRandom( min, max ) ((rand() % (int)(((max)+1) - (min))) + (min))

 

这里在初始化曲线的时候就采用控件的AddXY接口加入了1440个点的随机数,这里采用的条件为历史为一天,且当天一分钟保存一个历史点信息,全天的历史点为(60*24 = 1440),我们可以在调用的时候根据调用的时间间隔长短进行动态的修改

void CTestTeeChartDlg::InitChart()

    m_ctrlChart.Series(0).Clear();

    m_ctrlChart.Series(1).Clear();

    m_ctrlChart.GetPage().SetMaxPointsPerPage(1440);

 

    COleDateTime CurTime = COleDateTime::GetCurrentTime();

    COleDateTime tempTime ;

    tempTime = CurTime; 

 

    CurTime.SetTime(0,0,0);

    CurTime.SetDate(tempTime.GetYear(),tempTime.GetMonth(),tempTime.GetDay());

    COleDateTimeSpan tmSpan = COleDateTimeSpan(0,0,1,0);

    CString csTime ;

    for(int i=0; i<1440; i++) 

    {

        csTime = CurTime.Format("%H:%M");     

 

        float fzVal = float(GetRandom(12000,28000)/100); 

        m_ctrlChart.Series(0).AddXY(i,fzVal,csTime,i);

        fzVal = float(GetRandom(15000,25000)/100); 

        m_ctrlChart.Series(1).AddXY(i,fzVal,csTime,i);

 

        CurTime += tmSpan;

    }

 

    m_ctrlChart.GetAxis().GetLeft().SetMinMax(100, 300);

至此,编译运行就可以看到我们的曲线了.但是曲线在运行的时候我们虽然能够看到曲线的信息,但是如果我们鼠标在曲线上面移动的时候不能动态显示鼠标当前位置的数据值,由于我们在Tools中加入了Annotation工具,在这里我们OnMouseMoveTchartPlan消息来实现鼠标移动的时候数据变化的显示.

我们在H中加入定义:

void OnMouseMoveTchartPlan(long Shift, long X, long Y); 

DECLARE_EVENTSINK_MAP()

在实现中加入:

BEGIN_EVENTSINK_MAP(CTestTeeChartDlg, CDialog)

    ON_EVENT(CTestTeeChartDlg, IDC_TCHART1, 20, OnMouseMoveTchartPlan, VTS_I4 VTS_I4 VTS_I4)

END_EVENTSINK_MAP()

 

实现体:

void CTestTeeChartDlg::OnMouseMoveTchartPlan(long Shift, long X, long Y)

    int nP = -1;

    double xValue = m_ctrlChart.Series(0).XScreenToValue(X) + 0.5;

    nP = (int)(xValue); 

    if(nP < 0)

    {

        return ;

    }

    CValueList xList =     m_ctrlChart.Series(0).GetXValues();

    CValueList yList =     m_ctrlChart.Series(0).GetYValues();

    CValueList yPlanList =     m_ctrlChart.Series(1).GetYValues();

    CString csLabel = m_ctrlChart.Series(0).GetPointLabel(nP);

 

    double xV = xList.GetValue(nP);

    double xFacY = yList.GetValue(nP);

    double xPlanY = yPlanList.GetValue(nP);

    CToolList tlist = m_ctrlChart.GetTools();

    CTools  tools = tlist.GetItems(1);

    CAnnotationTool ant = tools.GetAsAnnotation();

    CString stmep;

    stmep.Format("时间: %s   功率(P): %4.2f kW    功率(Q): %4.2f kW",csLabel, xFacY, xPlanY);

    ant.SetText(stmep);  

}

 

程序的运行功能见下:

一:

二:

三:

详细实现细节见源程序

 

 

综述:

    这里简单介绍了TeeChart控件在VC环境中实现曲线分析的一种简单的方法,当然该控件还提供了十分丰富的接口给我们完成非常多的功能.如果有好的建议请与我联系: 

QQ:5516853

EMAIL:successq_g@163.com

 

源文档 <http://www.j2soft.cn/article/2008/1106/article_273.html

 

在 Delphi 中使用 TeeChart 组件可以实现丰富的数据可视化功能。TeeChart 是一个功能强大且高度可定制的图表控件库,广泛用于 Delphi 开发中的数据展示场景。以下是一些关键方法和步骤,帮助开发者在 Delphi 项目中集成和使用 TeeChart 组件。 ### 添加 TeeChart 组件到 Delphi 项目 在 Delphi 中使用 TeeChart 组件的第一步是将其添加到项目中。可以通过以下方式完成: 1. **设计时添加**: - 在 Delphi IDE 中打开表单设计器。 - 从组件面板中找到 TeeChart 控件并拖放到表单上。 2. **运行时添加**: - 在代码中动态创建 TeeChart 实例并添加到表单中。 - 示例代码: ```pascal var Chart: TChart; begin Chart := TChart.Create(Self); Chart.Parent := Self; Chart.Align := alClient; end; ``` ### 引用必要的单元 为了确保 TeeChart 组件能够正常运行,需要在代码中引用相关的单元。通常需要包含以下单元: ```pascal uses Vcl.TeeChart.TeeChart, Vcl.TeeChart.Styles, Vcl.TeeChart.Tools; ``` 这些单元提供了 TeeChart 的核心功能、样式支持以及工具类功能[^1]。 ### 配置图表类型和样式 TeeChart 支持多种图表类型,包括折线图、柱状图、饼图等。开发者可以根据需求选择合适的图表类型,并对其进行样式配置。 1. **设置图表类型**: - 使用 `AddSeries` 方法向图表中添加新的序列。 - 示例代码: ```pascal var Series: TLineSeries; begin Series := TLineSeries.Create(Chart); Series.Parent := Chart; Series.Title := 'Sample Line Series'; Series.AddXY(1, 10); Series.AddXY(2, 20); Series.AddXY(3, 30); end; ``` 2. **自定义样式**: - 可以通过 `TChart` 和 `TChartSeries` 的属性来调整图表的颜色、字体、图例等。 - 示例代码: ```pascal Chart.Title.Text.Text := 'My Chart'; Chart.Title.Font.Size := 14; Chart.Title.Font.Color := clBlue; ``` ### 数据绑定和动态更新 TeeChart 支持与数据源绑定,可以方便地从数据库或其他数据源获取数据并显示在图表上。此外,TeeChart 还支持实时更新功能,适用于需要动态刷新数据的应用场景。 1. **数据绑定**: - 使用 `DataSource` 属性将图表与数据源绑定。 - 示例代码: ```pascal Chart.DataSource := MyDataSource; ``` 2. **实时更新**: - 使用定时器定期更新数据并刷新图表。 - 示例代码: ```pascal procedure TForm1.Timer1Timer(Sender: TObject); begin // 更新数据 Series.AddXY(Now, Random(100)); // 刷新图表 Chart.Repaint; end; ``` ### 导出和交互功能 TeeChart 提供了丰富的导出选项,可以将图表导出为图片、PDF 等格式。此外,还支持多种交互功能,如工具提示、图例点击等。 1. **导出图表**: - 使用 `ExportToBitmapFile` 或 `ExportToPDF` 方法导出图表。 - 示例代码: ```pascal Chart.ExportToBitmapFile('chart.bmp'); ``` 2. **交互功能**: - 启用工具提示和图例点击事件。 - 示例代码: ```pascal Chart.Tools.Add(ttMouse); Chart.Tools.Add(ttLegend); ``` ### 性能优化和多语言支持 为了提高性能,可以在不需要时关闭不必要的功能,如动画效果。TeeChart 还支持多语言,可以根据用户的语言设置自动切换界面语言。 1. **性能优化**: - 关闭动画效果。 - 示例代码: ```pascal Chart.Animated := False; ``` 2. **多语言支持**: - 使用资源文件或语言包实现多语言支持。 - 示例代码: ```pascal Chart.Language := 'zh-CN'; ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值