MFC TeeChart 用法整理一.docx
《MFC TeeChart 用法整理一.docx》由会员分享,可在线阅读,更多相关《MFC TeeChart 用法整理一.docx(13页珍藏版)》请在冰豆网上搜索。
MFCTeeChart用法整理一
因工作需求,要用到TeeChart控件,发现TeeChart在MFC下的资料很少。
以下一些TeeChart的用法,大多是从网上七拼八凑得到的,还有一些是我自己摸索的,以下代码经均本人测试,测试环境vc++6.0。
TeeChart的安装方法网上有很多,这里不再赘述。
把TeeChart控件添加到工程中后,将其拖到对话框中,然后通过ClassWizard定义一个类变量m_TeeChart。
TeeChart简介:
TeeChart的主类是TChart,TChart类存在众多的属性方法和事件,下面介绍一些主要的属性。
1、TChart.Height:
图表的高度;可用下列语句获取或设置图表的高度
1m_TeeChart.SetHeight(100);//设置图表高度为100
2longHeight_size=m_TeeChart.GetHeight();//获取当前图表的高度
2、TChart.Width:
图表的宽度;用法与高度一致,就不在赘述
3、TChart.Header:
图表的标题;图表可以拥有多级标题,可用下列语句设置图表的标题以及追加标题
1m_TeeChart.GetHeader().GetText()
2.SetItem(0,COleVariant(“TeeChart使用例”));
3m_TeeChart.GetHeader().GetText().Add(COleVariant(“追加的标题”));
4、TChart.Series:
序列;Series是要显示的数据的主体,在一个图表中可以有一个或者多个序列,每一个序列可以有不同的显示类型,例如Line、Bar、Pic等等,稍后将单独描述。
5、TChart.Axis:
坐标轴;用来设置坐标轴的属性
1m_TeeChart.GetAxis().GetBottom().GetTitle().SetCaption("X轴的标题");
2//设置X轴的标题,准确的说应该是设置底部轴的标题
3m_TeeChart.GetAxis().GetLeft().GetTitle().SetCaption("Y轴的标题");
4//设置左侧轴的标题
5m_TeeChart.GetAxis().GetBottom().SetMinMax(0,100);
6//设置X轴的围
6、TChart.Legend:
图例,图例就是下图中右侧的部分
下列语句可以将图列隐藏
1m_TeeChart.GetLegend().SetVisible(FALSE);//隐藏图例
MFCTeeChart用法整理二(画二维图)
画图需要添加序列,添加序列有两种方式。
1、右击控件选择Properties,在TeeChartProEditor选项卡中单击EditChart,就可以在打开的对话框中编辑TeeChart控件的属性,如下图。
单击Add按钮,选择第一个Line类型作为示,如何点击OK。
如下图。
添加完序列之后,接下来就要往序列中添加数据了。
有三种方式添加数据:
第一种方法只能添加一些随机数:
m_TeeChart.Series(0).FillSampleValues(50);//Series函数的参数表示序列的索引值,这里只有一个Line序列,因此Line序列的索引值为0
第二种方法可以添加指定的数据:
for(inti=0;i<10;i++)
m_TeeChart.Series(0).AddXY(i,rand()%10,NULL,RGB(255,0,255));//AddXY函数中第一个参数是X轴的数据,第二个参数是Y轴的数据,
//第三个参数是X轴标记,第四个参数表示线条的颜色,rand()%10,表示生成10以的随机数
此代码执行的效果如下图所示
我们在第三个参数上添加一个字符串
m_TeeChart.Series(0).AddXY(i,rand()%10,"时间",RGB(255,0,255));
显示结果如下:
如果不想显示右侧的图例,可以用下列语句将其隐藏起来:
m_TeeChart.GetLegend().SetVisible(FALSE);
第三种方法可以添加指定的数组:
#defineMAX_SIZE20
//定义数组
COleSafeArrayXValues;
COleSafeArrayYValues;
//定义的长度只要大于所创建的数组的长度即可
DWORDXnum[]={MAX_SIZE};
DWORDYnum[]={MAX_SIZE};
XValues.Create(VT_R8,1,Xnum);
YValues.Create(VT_R8,1,Ynum);
doubletmp;
longindex=0;
for(inti=0;i{tmp=i;XValues.PutElement(&index,&tmp);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(0);//添加一个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图形的画法与折线图类似,只不过添加序列的类型不同,这里就不在赘述。 MFCTeeChart用法整理三(三维图) 画三维图,就要添加三维类型的序列。 这里我们仍然以折线图作为例。右击控件选择Properties,在TeeChartProEditor选项卡中单击EditChart,在弹出来的对话框中单击Add,在3D选项卡中选中Point3D类型,单击左下角的倒三角,选择NoPoint风格,如下图所示。下面我们开始添加代码:m_TeeChart.GetAspect().SetView3D(TRUE);//显示3D效果for(inti=0;i<20;i++)for(intj=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(inti=0;i<20;i++)for(intj=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(inti=0;i<5;i++)for(intj=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); MFCTeeChart用法整理四(保存图片)TeeChart可以保存多钟格式的图片,bmp、jpeg、pdf、gif等,对于这些功能的定义在CExport类中声明。我们打开CExport类,看看它的成员函数有那些:voidCopyToClipboardBitmap();voidCopyToClipboardMetafile(BOOLEnhanced);voidSaveToBitmapFile(LPCTSTRFileName);voidSaveToFile(LPCTSTRFileName);voidSaveToJPEGFile(LPCTSTRFileName,BOOLGray,longPerformance,longQuality,longWidth,longHeight);voidSaveToMetafile(LPCTSTRFileName);voidSaveToMetafileEnh(LPCTSTRFileName);voidShowExport();CStringSaveChartDialog();voidConvertTeeFileToText(LPCTSTRInputFile,LPCTSTROutputFile);VARIANTStream(longStreamType);CJPEGExportGetAsJPEG();CPNGExportGetAsPNG();CGIFExportGetAsGIF();CBMPExportGetAsBMP();CPCXExportGetAsPCX();CMetafileExportGetAsMetafile();CNativeExportGetAsNative();CXMLExportGetAsXML();CXLSExportGetAsXLS();CHTMLExportGetAsHTML();CTextExportGetAsText();voidEmailFile(LPCTSTRFileName,LPCTSTRSubject);CPDFExportGetAsPDF();CEPSExportGetAsEPS();CSVGExportGetAsSVG();CStringGetLabelHeader();voidSetLabelHeader(LPCTSTRlpszNewValue);CXAMLExportGetAsXAML();voidSaveToXMLFile(LPCTSTRFileName,BOOLIncludeData,BOOLXMLHeader);VARIANTSaveToXMLStream(BOOLIncludeData,BOOLXMLHeader);很显然,若想保存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");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格式
{
tmp=i;
XValues.PutElement(&index,&tmp);
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.Series(0).FillSampleValues(50);//向第一个Line序列中添加数据
m_TeeChart.Series
(1).FillSampleValues(50);//向第二个Line序列中添加数据
m_TeeChart.Series(0).SetColor(RGB(255,0,0));//设置第一条曲线的颜色为红色
(1).SetColor(RGB(0,255,0));//设置第二条曲线的颜色为绿色
m_TeeChart.Series(0).SetTitle("时间");//设置第一条曲线的图例标题为时间
(1).SetTitle("速度");//设置第二条曲线的图例标题为速度
//m_TeeChart.Series(0).GetMarks().SetVisible(TRUE);//显示第一条曲线的标记
//m_TeeChart.Series
(1).GetMarks().SetVisible(TRUE);//显示第二条曲线的标记
代码运行结果如下图所示:
柱状图以及其他2D图形的画法与折线图类似,只不过添加序列的类型不同,这里就不在赘述。
MFCTeeChart用法整理三(三维图)
画三维图,就要添加三维类型的序列。
这里我们仍然以折线图作为例。
右击控件选择Properties,在TeeChartProEditor选项卡中单击EditChart,在弹出来的对话框中单击Add,在3D选项卡中选中Point3D类型,单击左下角的倒三角,选择NoPoint风格,如下图所示。
下面我们开始添加代码:
m_TeeChart.GetAspect().SetView3D(TRUE);//显示3D效果
for(inti=0;i<20;i++)
for(intj=0;j<12;j++)
m_TeeChart.Series(0).GetAsPoint3D().AddXYZ(i,j*i,j,NULL,RGB(255,255,0));//向序列中添加数据,因为这里我们用到Point3D类型的序列,因此用到了GetAsPoint3D这个类数组
显示Z轴:
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(inti=0;i<5;i++)
for(intj=0;j<5;j++)
m_TeeChart.Series(0).GetAsTower().AddXYZ(i,j*i,j,NULL,RGB(255,255,0));//向Tower序列中添加数据
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);
MFCTeeChart用法整理四(保存图片)
TeeChart可以保存多钟格式的图片,bmp、jpeg、pdf、gif等,对于这些功能的定义在CExport类中声明。
我们打开CExport类,看看它的成员函数有那些:
voidCopyToClipboardBitmap();
voidCopyToClipboardMetafile(BOOLEnhanced);
voidSaveToBitmapFile(LPCTSTRFileName);
voidSaveToFile(LPCTSTRFileName);
voidSaveToJPEGFile(LPCTSTRFileName,BOOLGray,longPerformance,longQuality,longWidth,longHeight);
voidSaveToMetafile(LPCTSTRFileName);
voidSaveToMetafileEnh(LPCTSTRFileName);
voidShowExport();
CStringSaveChartDialog();
voidConvertTeeFileToText(LPCTSTRInputFile,LPCTSTROutputFile);
VARIANTStream(longStreamType);
CJPEGExportGetAsJPEG();
CPNGExportGetAsPNG();
CGIFExportGetAsGIF();
CBMPExportGetAsBMP();
CPCXExportGetAsPCX();
CMetafileExportGetAsMetafile();
CNativeExportGetAsNative();
CXMLExportGetAsXML();
CXLSExportGetAsXLS();
CHTMLExportGetAsHTML();
CTextExportGetAsText();
voidEmailFile(LPCTSTRFileName,LPCTSTRSubject);
CPDFExportGetAsPDF();
CEPSExportGetAsEPS();
CSVGExportGetAsSVG();
CStringGetLabelHeader();
voidSetLabelHeader(LPCTSTRlpszNewValue);
CXAMLExportGetAsXAML();
voidSaveToXMLFile(LPCTSTRFileName,BOOLIncludeData,BOOLXMLHeader);
VARIANTSaveToXMLStream(BOOLIncludeData,BOOLXMLHeader);
很显然,若想保存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");
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