先看看AddXY
const UINT nDATALENGTH= 100; double dData[nDATALENGTH]; for (int i=0;i dData[i] = 100 * sin((float)i)*cos((float)4*i); } //ClearAllSeries(); CSerieslineSeries = (CSeries)m_TeeChart.Series(0); lineSeries.Clear();//在最前面加上ClearAllSeries(ClearAllSeries是自己写的函数)就不用了 for(int i=0;i lineSeries.AddXY((double)i,dData[i],NULL,0); } 由于在TeeChart里,只加了一个FastLine,所以Series(0)就算Fast Line,代码首先获得图像序列m_TeeChart.Series(0); 然后再调用这个序列来作图,作图前先清空图像,用ClearAllSeries()也可以 然后就是一个点一个点的往里加了 做出来的效果: AddXY的第一个参数是x点坐标,第二个是y点坐标,第三个参数是为了使x坐标特殊显示,这是会替换掉x坐标的显示内容,如我想显示“点xx“可以这样 CString str; for(int i=0;i str.Format(_T(\点%d\),i); lineSeries.AddXY((double)i,dData[i],str,0); } 第四个参数在线图里不起作用,在柱状图里可以设置颜色 2.2.2 普通线图 - AddArray 在数据量特别大时,强烈建议使用AddArray函数 AddArray的函数声明如下 void AddArray(long ArraySize, VARIANT&YArray, VARIANT&XArray); x,y是两个VARIANT的数据类型,VARIANT有个类型是VT_ARRAY 可以给VARIANT赋一个数组进去 具体操作如下: 方法1: const UINT nDATALENGTH = 100; double dData[nDATALENGTH]; for (int i=0;i dData[i] = 100*sin((float)i)*cos((float)4*i); } //声明如下数据: VARIANT vAX,vAY; SAFEARRAY* psax; SAFEARRAY* psay; SAFEARRAYBOUND rgsabound; //初始化 rgsabound.cElements=nDATALENGTH; rgsabound.lLbound=0; psax=SafeArrayCreate(VT_R8,1,&rgsabound);//分配空间 psay=SafeArrayCreate(VT_R8,1,&rgsabound); vAX.vt=VT_ARRAY|VT_R8;//设置为double型数组,VT_R8就是指double vAX.parray=psax;//把内容加入VARIANT中 vAY.vt=VT_ARRAY|VT_R8; vAY.parray=psay; //这时VARIANT 就可以加入数据了 double dtemp;//用来临时存放x坐标 for(long i=0;i dtemp = i; SafeArrayPutElement(psax,&i,&dtemp); dtemp = dData[i]; SafeArrayPutElement(psay,&i,&dtemp); //更简单写法 //SafeArrayPutElement(psay,&i,dData+i); } //开始画图 CSerieslineSeries = (CSeries)m_TeeChart.Series(0);