1、MFC TeeChart 用法整理一MFC TeeChart 用法整理一因工作需求,要用到TeeChart控件,发现TeeChart在MFC下的资料很少。以下一些TeeChart的用法,大多是从网上七拼八凑得到的,还有一些是我自己摸索的,以下代码经均本人测试,测试环境vc+6.0。 TeeChart的安装方法网上有很多,这里不再赘述。把TeeChart控件添加到工程中后,将其拖到对话框中,然后通过ClassWizard定义一个类变量m_TeeChart。TeeChart简介: TeeChart的主类是TChart,TChart类存在众多的属性方法和事件,下面介绍一些主要的属性。 1、 TCha
2、rt.Height:图表的高度;可用下列语句获取或设置图表的高度1 m_TeeChart.SetHeight(100); /设置图表高度为1002 long Height_size = m_TeeChart.GetHeight(); /获取当前图表的高度2、TChart.Width:图表的宽度;用法与高度一致,就不在赘述3、TChart.Header:图表的标题;图表可以拥有多级标题,可用下列语句设置图表的标题以及追加标题1 m_TeeChart.GetHeader().GetText()2 .SetItem(0, COleVariant(“TeeChart 使用例”);3 m_TeeChar
3、t.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().Ge
4、tTitle().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,就可以在打
5、开的对话框中编辑TeeChart控件的属性,如下图。单击Add按钮,选择第一个Line类型作为示,如何点击OK。如下图。添加完序列之后,接下来就要往序列中添加数据了。有三种方式添加数据:第一种方法只能添加一些随机数:m_TeeChart.Series(0).FillSampleValues(50); /Series函数的参数表示序列的索引值,这里只有一个Line序列,因此Line序列的索引值为0第二种方法可以添加指定的数据:for(int i=0; i10; i+) m_TeeChart.Series(0).AddXY(i, rand()%10, NULL, RGB(255,0,255); /
6、AddXY函数中第一个参数是X轴的数据,第二个参数是Y轴的数据,/第三个参数是X轴标记,第四个参数表示线条的颜色,rand()%10,表示生成10以的随机数此代码执行的效果如下图所示我们在第三个参数上添加一个字符串for(int i=0; i10; i+) m_TeeChart.Series(0).AddXY(i, rand()%10, 时间, RGB(255,0,255);显示结果如下:如果不想显示右侧的图例,可以用下列语句将其隐藏起来:m_TeeChart.GetLegend().SetVisible(FALSE);第三种方法可以添加指定的数组:#define MAX_SIZE 20/定义
7、数组 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; iMAX_SIZE; i+) tmp = i; XValues.PutElement(&index, &tmp); tmp = rand()%50; YValu
8、es.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
9、、第二种添加序列的办法是用代码添加:m_TeeChart.AddSeries(0); /AddSeries函数的参数表示添加序列的类型 0表示添加的序列是折线图 画多条曲线的折线图m_TeeChart.GetAspect().SetView3D(FALSE); /以2D的效果显示m_TeeChart.AddSeries(0); /添加一个Line序列m_TeeChart.AddSeries(0); /添加一个Line序列m_TeeChart.Series(0).FillSampleValues(50); /向第一个Line序列中添加数据m_TeeChart.Series(1).FillSamp
10、leValues(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(
11、TRUE); /显示第一条曲线的标记/ m_TeeChart.Series(1).GetMarks().SetVisible(TRUE); /显示第二条曲线的标记代码运行结果如下图所示:柱状图以及其他2D图形的画法与折线图类似,只不过添加序列的类型不同,这里就不在赘述。MFC TeeChart用法整理 三(三维图)画三维图,就要添加三维类型的序列。 这里我们仍然以折线图作为例。右击控件选择Properties,在TeeChart Pro Editor选项卡中单击Edit Chart,在弹出来的对话框中单击Add,在3D选项卡中选中Point 3D类型,单击左下角的倒三角,选择 No Point
12、风格,如下图所示。下面我们开始添加代码: m_TeeChart.GetAspect().SetView3D(TRUE); /显示3D效果 for(int i=0; i20; i+) for(int j=0; j12; 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(
13、int i=0; i20; i+) for(int j=0; j12; 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_TeeCha
14、rt.GetAxis().GetDepth().GetLabels().SetStyle(0); /设置显示坐标的风格Z轴太窄了,我们可以调宽些:m_TeeChart.GetAspect().SetChart3DPercent(50); /参数围在0100之间画柱状图与画折线图类似,不过添加序列的时候选择Tower类型序列: m_TeeChart.GetAspect().SetView3D(TRUE); for(int i=0; i5; i+) for(int j=0; j5; j+) m_TeeChart.Series(0).GetAsTower().AddXYZ(i, j*i, j, NU
15、LL, 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 TeeCh
16、art用法整理 四(保存图片)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,
17、 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 Get
18、AsJPEG(); 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
19、 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 XMLHead
20、er);很显然,若想保存bmp格式的图片,需要用SaveToBitmapFile函数,其参数就是图片的绝对路径。而SaveToJPEGFile函数是用来保存jpeg图片的,它有五个参数,FileName是文件存储的路径,Gray表示是否保存为黑白图像,Performance表示JPEG是生成质量优先还是速度优先,Quality是从0到100的整数,100表示生成的图片质量最好,Width和Height表示图片的像素,-1表示以TeeChart的宽和高。下面是代码示例,生成bmp和jpeg格式的图片: m_TeeChart.GetExport().SaveToBitmapFile(C:1.bmp
21、); 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格式
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1