Teechart v8在VS中的AddArray用法

来源:互联网 发布:淘宝商城男鞋运动鞋 编辑:程序博客网 时间:2024/05/21 08:59


转自:http://blog.sina.com.cn/s/blog_4d111add01011o8v.html


初用teechart,从写代码的便利程度来看确实是好东西,不过总感觉在网上找的资料与自己在VS2008中的用法不太一样,很明显的一点就是各种强制转换。

teechart中用于添加数据的函数有Add,AddArray,AddXY等,此处记录自己在VS2008中AddArray的用法。

由于需要添加大量数据(10000以上),因此,用AddXY一个一个加感到速度乏力。但在网上找了N久都没找到过原型为AddArray(long ArraySize, VARIANT &YArray, VARIANT &XArray)的用法例程,其实关键在于不知怎样将一个数组转化为VARIANT。

1:添加成员变量

VARIANT vAX,vAY;
    VARIANT &AX;
    VARIANT &AY;

SAFEARRAY *psax;
    SAFEARRAY *psay;

 

vAX,vAY为变体的实体,AX,AY为引用变量,AddArray函数格式要求。

其中AX,AY需要在构造函数中初始化,如下:

CteetestDlg::CteetestDlg(CWnd* pParent )
    : CDialog(CteetestDlg::IDD, pParent)
     ,AX(vAX),AY(vAY)

2:初始化

SAFEARRAYBOUND rgsabound;

rgsabound.cElements=10000;

rgsabound.lLbound=0;

psax=SafeArrayCreate(VT_R8,1,&rgsabound);

psay=SafeArrayCreate(VT_R8,1,&rgsabound);

AX.vt=VT_ARRAY|VT_R8;

AX.parray=psax;

AY.vt=VT_ARRAY|VT_R8;

AY.parray=psay;

 

3:添加数据,画图

以下是在一个按键的响应函数中实现的

      int index=0;

void CteetestDlg::OnBnClickedButton1()
   {
    // TODO: 在此添加控件通知处理程序代码
    ((CSeries)m_chart.Series(0)).Clear();
    long i;
    double j,t;
    for(i=0;i<10000;i++)
    {
     j=i;
     t=index*0.1*j;
     SafeArrayPutElement(psax,&i,&j);
     SafeArrayPutElement(psay,&i,&t);
    }
 index++;
 ((CSeries)m_chart.Series(0)).AddArray(10000,AY,AX);
}

结果截图:

 

Teechart <wbr>v8在VS中的AddArray用法



0 0
原创粉丝点击