teechart的addarray_用Teechart画二维成像图

本文介绍了如何利用TeeChart控件中的Colorgrid系列来绘制类似于Matlab imagesc命令的二维图像,通过颜色表示数据大小。通过创建COleSafeArray并设置坐标和颜色值,然后使用Series(0).GetAsColorGrid().AddArrayXYZ方法添加数据,实现二维成像效果。注意,Series中的索引与名称无关,而是根据添加顺序确定。

这儿说的二维图,指的是类似Matlab的imagesc这种命令画出来的图像,用颜色来表示数据的大小或者说强弱。简单地说,就是一个二维数组,里面存放的数据用颜色来表示。做雷达SAR图像、ISAR图像经常要用这个来显示。

teechart可以完成这个功能。自己琢磨了半天,终于搞清楚一点点——网上关于这方面的资料太少了。

我用的是Series中的3D-> Colorgrid

步骤:

(1)准备工作参见我上一篇博文:

(2)在VC界面上添加了Teechart控件之后,手动添加Series,它会自动命名为Series0、Series1。多个Series,会依次从上往下排列。注意:这个名字中的0/1跟排名没有关系,即你可以吧Series1移到Series0之前。最终代码中的m_tchart.Series(0),这个0指的是在Series列表中第一项!!而并不一定是名字叫做Series0的那项!类似地,m_tchart.Series(1) 指的是排名第二的那个曲线,跟名字无关。

(3)添加这个Series,选择的类型是3D->Colorgrid。添加完毕后出现在Series列表里头,双击可以编辑一些属性。例如Grid 3D->Range,可以选择你想要的用来表示数值大小的颜色类型(Start,middle,end)。

(4)可以根据需要编辑tchart的显示属性,在此不表。

(5)添加代码:

COleSafeArray XX;  //color grid的横坐标

COleSafeArray ZZ;  //color grid的纵坐标,与我们常用的Y一样

COleSafeArray YY; // 表示的是颜色的值,不是Y轴

DWORD numElements[] = {180001};

XX.Create(VT_I4, 1, numElements);

YY.Create(VT_R8, 1, numElements);

ZZ.Create(VT_I4, 1, numElements);

long xIndex;

long zIndex;

long i=0;

for (xIndex=0; xIndex<90; xIndex++)

{

for (zIndex=0; zIndex<2000; zIndex++)

{

double val =zIndex*xIndex;  //二维数组对应的值

YY.PutElement(&i,&val);

XX.PutElement(&i,&xIndex);

ZZ.PutElement(&i,&zIndex);

i++;

}

}

m_tchart.Series(0).GetAsColorGrid().AddArrayXYZ(XX,YY, ZZ);

(6)上面这段代码的一些说明。

首先,因为Series(0)已经被我们在设计阶段就手动添加了,所以没有必要在代码中加上

m_tchart.AddSeries(0);

其次,上面说了,这个m_tchart.Series(0)里面的0跟Seriesx名字中的0或者1无关,这儿的0表示你在列表中的第一项。

再次,m_tchart.Series(0).GetAsColorGrid()表示这个Series类型是ColorGrid,如果我们改用m_tchart.Series(0).GetAsPolarGrid(),程序运行时会报错。因为我们在设计阶段添加的Series类型是ColorGrid,而不是PolarGrid。

最后,因为使用了GetAsColorGrid,需要在头文件中包含:

#include ".\teechart\PolarGridSeries.h"

.\teechart\是我自己存放的目录名字,根据你自己的路径修改。

还是那句话,如果在编译的时候报错信息是使用了未声明的类,即把对应的类的.h文件包含进来即可。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值