MFC TeeChart 用法整理一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
因工作需求,要用到TeeChart控件,发现TeeChart在MFC下的资料很少。
以下一些TeeChart的用法,大多是从网上七拼八凑得到的,还有一些是我自己摸索的,以下代码经均本人测试,测试环境vc++。
TeeChart的安装方法网上有很多,这里不再赘述。
把TeeChart控件添加到工程中后,将其拖到对话框中,然后通过ClassWizard定义一个类变量m_TeeChart。
TeeChart简介:
TeeChart的主类是TChart,TChart类存在众多的属性方法和事件,下面介绍一些主要的属性。
1、:图表的高度;可用下列语句获取或设置图表的高度
1 m(100); 1 metText()
2.SetItem(0, COleVariant(“TeeChart 使用范例”));
3m().GetText().Add(COleVariant(“追加的标题”));
4、:序列;Series是要显示的数据的主体,在一个图表中可以有一个或者多个序列,每一个序列可以有不同的显示类型,例如Line、Bar、Pic等等,稍后将单独描述。
5、:坐标轴;用来设置坐标轴的属性
1 m().GetBottom().GetTitle().SetCaption("X轴的标题");
23 metLeft().GetTitle().SetCaption("Y轴的标题");
45 metBottom().SetMinMax(0, 100);
61
metVisible(FALSE); illSampleValues(50); ddXY(i, rand()%10, NULL, RGB(255,0,255)); ddXY(i, rand()%10, "时间", RGB(255,0,255));
显示结果如下:
如果不想显示右侧的图例,可以用下列语句将其隐藏起来:
().SetVisible(FALSE);
第三种方法可以添加指定的数组:
#define MAX_SIZE 20
ddArray(MAX_SIZE, XValues, YValues);
如果标记Y轴的值,可以用下列语句:
(0).GetMarks().SetVisible(TRUE);
设置X轴与Y轴的标题:
().GetLeft().GetTitle().SetCaption("路程");
().GetBottom().GetTitle().SetCaption("速度");
2、第二种添加序列的办法是用代码添加:
(0); etView3D(FALSE); illSampleValues(50); illSampleValues(50); etColor(RGB(255, 0, 0)); etColor(RGB(0, 255, 0)); etTitle("时间"); etTitle("速度"); etMarks().SetVisible(TRUE); etMarks().SetVisible(TRUE); etView3D(TRUE);
etAsPoint3D().AddXYZ(i, j*i, j, NULL, RGB(255,255,0)); etView3D(TRUE); etAsPoint3D().AddXYZ(i, j*i, j, NULL, RGB(255,255,0));
().SetVisible(FALSE); etDepth().SetVisible(TRUE); etDepth().GetLabels().SetVisible(TRUE); etDepth().GetLabels().SetStyle(0); etChart3DPercent(50); etView3D(TRUE);
for(int i=0; i<5; i++)
for(int j=0; j<5; j++)
(0).GetAsTower().AddXYZ(i, j*i, j, NULL, RGB(255,255,0)); etVisible(FALSE);
().GetDepth().SetVisible(TRUE);
().GetDepth().GetLabels().SetVisible(TRUE);
().GetDepth().GetLabels().SetStyle(0);
().SetChart3DPercent(50);
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格式的图片:
().SaveToBitmapFile("C:\\");
().SaveToJPEGFile("C:\\", 0, 0, 100, -1,-1 );
etAsGIF().SaveToFile("C:\\"); etAsBMP().SaveToFile("C:\\"); etAsJPEG().SaveToFile("C:\\"); etAsPDF().SaveToFile("C:\\"); //保存为pdf格式。