由于用到绘制固定大小缓存的波形数据,因此,用TeeChart中AddXY感觉不好用,有点慢,项用AddArray绘制,发现没有相关的例程参考,因此自己写了一个例程备用。
从我的理解来看AddArray的核心是添加一个safearray,因此整个赋值过程交由safearray处理,而Varient只需要取到safearray的地址即可,完成后将Variant传入函数即可
VARIANT VariantX, VariantY;
SAFEARRAY *ax, *ay;
SAFEARRAYBOUND arybound;
arybound.lLbound = 0;
arybound.cElements = 1000;
/*初始化safearray,类型以及边界*/
ax = SafeArrayCreate(VT_INT, 1, &arybound);
ay = SafeArrayCreate(VT_INT, 1, &arybound);
VariantInit(&VariantX);
VariantInit(&VariantY);
VariantX.vt = VT_ARRAY | VT_INT;
VariantX.parray = ax;
VariantY.vt = VT_ARRAY | VT_INT;
VariantY.parray = ay;
int pos;
for (int i = 0; i < 1000; i++)
{
SafeArrayPutElement(ax, (LONG *)&i, &i);
pos = (rand() % 1000);
SafeArrayPutElement(ay, (LONG *)&i, &pos);
}
m_Series[0].AddArray(1000, VariantY, VariantX);