彩票走势图

教你如何用TeeChart画二维成像图

原创|其它|编辑:郝浩|2012-10-29 11:15:02.000|阅读 807 次

概述:本文教你如何用TeeChart画二维成像图。这儿说的二维图,指的是类似Matlab的imagesc这种命令画出来的图像,用颜色来表示数据的大小或者说强弱。简单地说,就是一个二维数组,里面存放的数据用颜色来表示。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

这儿说的二维图,指的是类似Matlab的imagesc这种命令画出来的图像,用颜色来表示数据的大小或者说强弱。简单地说,就是一个二维数组,里面存放的数据用颜色来表示。做雷达SAR图像、ISAR图像经常要用这个来显示。对比了多款图表,最后总结出 TeeChart 可以完成这个功能。

附:TeeChart下载链接

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

步骤:

(1)在VC界面上添加了Teechart控件之后,手动添加Series,它会自动命名为Series0、Series1。多个Series,会依次从上往下排列。

注意:这个名字中的0/1跟排名没有关系,即你可以吧Series1移到Series0之前。最终代码中的m_tchart.Series(0),这个0指的是在Series列表中第一项!!而并不一定是名字叫做Series0的那项!类似地,m_tchart.Series(1) 指的是排名第二的那个曲线,跟名字无关。

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

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

(4)添加代码:

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);

(5)上面这段代码的一些说明:

首先,因为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文件包含进来即可。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:搜狐博客

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP