Teechart的入门使用-VS2005-VS2008

Teechart的入门使用-VS2005-VS2008
Teechart的入门使用-VS2005-VS2008

1、Teechart版本

在这里使用的“TeeChart Pro Activex control v5”,安装程序在“TeeChart Pro Activex control v5.rar”里面。

2、Teechart安装

点击后面的exe文件进行安装。

3、Teechart入门演示

?开发环境:VS2005

?语言:VC++

1)创建MFC对话框程序

2)添加Teechart控件到工具箱

双击对话框界面,会显示工具箱,在工具箱的空白位置右键点击,会出现下图,然后选择“添加选项卡”。如下图所示:

输入选项卡的名称“Teechart”,然后右键点击“选择项”,然后出现下图:

选择“TeeChart Pro Activex Control v5”,然后点击“确定”按钮,会发现在工具栏的Teechart标签下面出现了Teechart控件。如下图所示:

3)添加相关类:

在类视图里面,右键点击项目名称,然后选择“添加”->“类”,在下图中,选择“TypeLib 中的MFC类”。如下图所示:

点击“添加”,然后出现下图,选择“TeeChart Pro Activex Control v5<1.0>”

4)界面操作

在对话框界面添加Teechart控件,如下图所示:

双击Teechart控件,然后出现下图的编辑界面,添加三个Series,然后点击“Close”按钮,如下图所示:

在对话框界面,为Teechart控件添加变量,默认的变量类型为CTchart,输入变量名。如下图所示:

点确定后,除了会自动添加控件变量以外,还会创建一个CTchart的类,这个是默认创建的。

5)代码添加

在SimpleDemoDlg.cpp添加Series的头文件:

#include "CSeries.h"

双击界面的“SHOW”按钮,然后添加下列代码:

void CSimpleDemoDlg::OnBnClickedButtonShow() { CSeries mycs = (CSeries)m_tChart.Series(0); CSeries mycs1 = (CSeries)m_tChart.Series(1);

CSeries mycs2 = (CSeries)m_tChart.Series(2); f or (int i = 0; i < 1000; i++)

mycs.AddNullXY(i, 1.5*i+300, _T("")); for (int i = 0; i < 2000; i++)

mycs1.AddNullXY(i, 3*i-1300, _T("")); for (int i = 0; i < 300; i++)

mycs2.AddNullXY(1.8*i, i*i-130*i - 1000, _T("")); }

6)运行效果

按F5运行后,点击“SHOW”按钮,就可以出现下列效果图:

MFC TeeChart 用法整理一

因工作需求,要用到TeeChart控件,发现TeeChart在MFC下的资料很少。以下一些TeeChart的用法,大多是

从网上七拼八凑得到的,还有一些是我自己摸索的,以下代码经均本人测试,测试环境vc++6.0。

TeeChart的安装方法网上有很多,这里不再赘述。把TeeChart控件添加到工程中后,将其拖到对话框中,然

后通过ClassWizard定义一个类变量m_TeeChart。

TeeChart简介:

TeeChart的主类是TChart,TChart类存在众多的属性方法和事件,下面介绍一些主要的属性。

1、TChart.Height:图表的高度;可用下列语句获取或设置图表的高度

1 m_TeeChart.SetHeight(100); //设置图表高度为100

2long Height_size = m_TeeChart.GetHeight(); //获取当前图表的高度

2、TChart.Width:图表的宽度;用法与高度一致,就不在赘述

3、TChart.Header:图表的标题;图表可以拥有多级标题,可用下列语句设置图表的标题以及追加标题

1 m_TeeChart.GetHeader().GetText()

2.SetItem(0, COleVariant(“TeeChart 使用范例”));

3m_TeeChart.GetHeader().GetText().Add(COleVariant(“追加的标题”));

4、TChart.Series:序列;Series是要显示的数据的主体,在一个图表中可以有一个或者多个序列,每一个序列可以

有不同的显示类型,例如Line、Bar、Pic等等,稍后将单独描述。

5、TChart.Axis:坐标轴;用来设置坐标轴的属性

1 m_TeeChart.GetAxis().GetBottom().GetTitle().SetCaption("X轴的标题");

2// 设置X轴的标题,准确的说应该是设置底部轴的标题

3 m_TeeChart.GetAxis().GetLeft().GetTitle().SetCaption("Y轴的标题");

4// 设置左侧轴的标题

5 m_TeeChart.GetAxis().GetBottom().SetMinMax(0, 100);

6//设置X轴的范围

6、TChart.Legend:图例,图例就是下图中右侧的部分

下列语句可以将图列隐藏

1 m_TeeChart.GetLegend().SetVisible(FALSE); //隐藏图例

MFC TeeChart 用法整理二(画二维图)

画图需要添加序列,添加序列有两种方式。

1、右击控件选择Properties,在TeeChart Pro Editor选项卡中单击Edit Chart,就可以在打开的对话框中编辑TeeChart控件的属性,如下图。

单击Add按钮,选择第一个Line类型作为示范,如何点击OK。如下图。

添加完序列之后,接下来就要往序列中添加数据了。有三种方式添加数据:

第一种方法只能添加一些随机数:

m_TeeChart.Series(0).FillSampleValues(50); //Series函数的参数表示序列的索引值,这里只有一个Line序列,因此Line 序列的索引值为0

第二种方法可以添加指定的数据:

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

m_TeeChart.Series(0).AddXY(i, rand()%10, NULL, RGB(255,0,255)); //AddXY函数中第一个参数是X轴的数据,第二个参数是Y轴的数据,

//第三个参数是X轴标记,第四个参数表示线条的颜色,rand()%10,表示生成10以内的随机数

此代码执行的效果如下图所示

我们在第三个参数上添加一个字符串

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

m_TeeChart.Series(0).AddXY(i, rand()%10, "时间", RGB(255,0,255)); 显示结果如下:

如果不想显示右侧的图例,可以用下列语句将其隐藏起来:

m_TeeChart.GetLegend().SetVisible(FALSE);

第三种方法可以添加指定的数组:

#define MAX_SIZE 20

//定义数组

COleSafeArray XValues;

COleSafeArray YValues;

//定义的长度只要大于所创建的数组的长度即可

DWORD Xnum[] = {MAX_SIZE};

DWORD Ynum[] = {MAX_SIZE};

XValues.Create(VT_R8, 1, Xnum);

YValues.Create(VT_R8, 1, Ynum);

double tmp;

long index=0;

for(int i=0; i

{

//X tmp = i;

XValues.PutElement(&index, &tmp);

//Y tmp = rand()%50;

YValues.PutElement(&index, &tmp);

index++;

}

//向序列中添加数据

m_TeeChart.Series(0).AddArray(MAX_SIZE, XValues, YValues);

如果标记Y轴的值,可以用下列语句:

m_TeeChart.Series(0).GetMarks().SetVisible(TRUE);

设置X轴与Y轴的标题:

m_TeeChart.GetAxis().GetLeft().GetTitle().SetCaption("路程");

m_TeeChart.GetAxis().GetBottom().GetTitle().SetCaption("速度");

2、第二种添加序列的办法是用代码添加:

m_TeeChart.AddSeries(0); //AddSeries函数的参数表示添加序列的类型 0表示添加的序列是折线图

画多条曲线的折线图

m_TeeChart.GetAspect().SetView3D(FALSE); //以2D的效果显示

m_TeeChart.AddSeries(0); //添加一个Line序列

m_TeeChart.AddSeries(1); //添加一个Line序列

m_TeeChart.Series(0).FillSampleValues(50); //向第一个Line序列中添加数据

m_TeeChart.Series(1).FillSampleValues(50); //向第二个Line序列中添加数据

m_TeeChart.Series(0).SetColor(RGB(255, 0, 0)); // 设置第一条曲线的颜色为红色

m_TeeChart.Series(1).SetColor(RGB(0, 255, 0)); //设置第二条曲线的颜色为绿色

m_TeeChart.Series(0).SetTitle("时间"); //设置第一条曲线的图例标题为时间

m_TeeChart.Series(1).SetTitle("速度"); //设置第二条曲线的图例标题为速度

// m_TeeChart.Series(0).GetMarks().SetVisible(TRUE); //显示第一条曲线的标记

// m_TeeChart.Series(1).GetMarks().SetVisible(TRUE); //显示第二条曲线的标记

代码运行结果如下图所示:

柱状图以及其他2D图形的画法与折线图类似,只不过添加序列的类型不同,这里就不在赘述。

MFC TeeChart用法整理三(三维图)

画三维图,就要添加三维类型的序列。

这里我们仍然以折线图作为范例。右击控件选择Properties,在TeeChart Pro Editor 选项卡中单击Edit Chart,在弹出来的对话框中单击Add,在3D选项卡中选中Point 3D类型,单击左下角的倒三角,选择No Point风格,如下图所示。

下面我们开始添加代码:

m_TeeChart.GetAspect().SetView3D(TRUE); //显示3D效果

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

for(int j=0; j<12; j++)

m_TeeChart.Series(0).GetAsPoint3D().AddXYZ(i, j*i, j, NULL, RGB(255,255,0)); //向序列中添加数据,因为这里我们用到Point3D类型的序列,因此用到了GetAsPoint3D这个类数组

显示Z轴:

m_TeeChart.GetAspect().SetView3D(TRUE); //显示3D效果

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

for(int j=0; j<12; j++)

m_TeeChart.Series(0).GetAsPoint3D().AddXYZ(i, j*i, j, NULL, RGB(255,255,0));

m_TeeChart.GetLegend().SetVisible(FALSE); //隐藏图例

m_TeeChart.GetAxis().GetDepth().SetVisible(TRUE); //显示Z轴

m_TeeChart.GetAxis().GetDepth().GetLabels().SetVisible(TRUE); //显示Z轴上的坐标

m_TeeChart.GetAxis().GetDepth().GetLabels().SetStyle(0); //设置显示坐标的风格

Z轴太窄了,我们可以调宽些:

m_TeeChart.GetAspect().SetChart3DPercent(50); //参数范围在0~100之间

画柱状图与画折线图类似,不过添加序列的时候选择Tower类型序列:

m_TeeChart.GetAspect().SetView3D(TRUE);

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

for(int j=0; j<5; j++)

m_TeeChart.Series(0).GetAsTower().AddXYZ(i, j*i, j, NULL, RGB(255,255,0)); //向Tower序列中添加数据

m_TeeChart.GetLegend().SetVisible(FALSE);

m_TeeChart.GetAxis().GetDepth().SetVisible(TRUE);

m_TeeChart.GetAxis().GetDepth().GetLabels().SetVisible(TRUE);

m_TeeChart.GetAxis().GetDepth().GetLabels().SetStyle(0);

m_TeeChart.GetAspect().SetChart3DPercent(50);

MFC TeeChart用法整理四(保存图片)

TeeChart可以保存多钟格式的图片,bmp、jpeg、pdf、gif等,对于这些功能的定义在CExport类中声明。我们打开CExport类,看看它的成员函数有那些:

void CopyToClipboardBitmap();

void CopyToClipboardMetafile(BOOL Enhanced);

void SaveToBitmapFile(LPCTSTR FileName);

void SaveToFile(LPCTSTR FileName);

void SaveToJPEGFile(LPCTSTR FileName, BOOL Gray, long Performance, long Quality, long Width, long Height);

void SaveToMetafile(LPCTSTR FileName);

void SaveToMetafileEnh(LPCTSTR FileName);

void ShowExport();

CString SaveChartDialog();

void ConvertTeeFileToText(LPCTSTR InputFile, LPCTSTR OutputFile);

VARIANT Stream(long StreamType);

CJPEGExport GetAsJPEG();

CPNGExport GetAsPNG();

CGIFExport GetAsGIF();

CBMPExport GetAsBMP();

CPCXExport GetAsPCX();

CMetafileExport GetAsMetafile();

CNativeExport GetAsNative();

CXMLExport GetAsXML();

CXLSExport GetAsXLS();

CHTMLExport GetAsHTML();

CTextExport GetAsText();

void EmailFile(LPCTSTR FileName, LPCTSTR Subject);

CPDFExport GetAsPDF();

CEPSExport GetAsEPS();

CSVGExport GetAsSVG();

CString GetLabelHeader();

void SetLabelHeader(LPCTSTR lpszNewValue);

CXAMLExport GetAsXAML();

void SaveToXMLFile(LPCTSTR FileName, BOOL IncludeData, BOOL XMLHeader);

VARIANT SaveToXMLStream(BOOL IncludeData, BOOL XMLHeader);

很显然,若想保存bmp格式的图片,需要用SaveTo Bitmap File函数,其参数就是图片的绝对路径。而SaveToJPEGFile函数是用来保存jpeg图片的,它有五个参数,FileName是文件存储的路径,Gray表示是否保存为黑白图像,Performance表示JPEG是生成质量优先还是速度优先,Quality是从0到100的整数,100表示生成的图片质量最好,Width和Height表示图片的像素,-1表示以TeeChart的宽和高。

下面是代码示例,生成bmp和jpeg格式的图片:

m_TeeChart.GetExport().SaveToBitmapFile("C:\\1.bmp");

m_TeeChart.GetExport().SaveToJPEGFile("C:\\4.jpeg", 0, 0, 100, -1,-1 ); //Gray为0表示生成彩色图片

那么gif、png等其他格式的图片如何保存呢?这就需要用到GetAsGIF、GetAsPNG这些类了:

m_TeeChart.GetExport().GetAsGIF().SaveToFile("C:\\1.gif"); //保存为GIF格式

m_TeeChart.GetExport().GetAsBMP().SaveToFile("C:\\1.bmp"); //保存为BMP格式

m_TeeChart.GetExport().GetAsJPEG().SaveToFile("C:\\1.jpeg"); //保存为jpeg格式

m_TeeChart/GetExport().GetAsPDF().SaveToFile("C:\\1.pdf"); //保存为pdf格式

相关主题
相关文档
最新文档