绘制一维距离像原理:使用TeeChart控件中的ColorGrid显示(X,Y,Z)三维数据,X和Z分别代表一维距离像的x轴和y轴数据,Y代表对应的数值,以不同颜色显示。

1.注册TeeChart5

对于win xp 和 32系统,复制TeeChart5.ocx到C:\Windows\System32,WIN+R, 输入cmd,打开命令提示框,输入regsvr32.exe C:\Windows\System32\TeeChart5.ocx 即可;

对于win7 64位系统,复制TeeChart5.ocx到C:\Windows\SysWOW64,以管理员身份运行命令提示框,输入regsvr32.exe C:\Windows\SysWOW64\TeeChart5.ocx 即可;

2.VS添加TeeChart控件

2.1创建MFC工程,在vs资源视图,选中一个dialog,在该dialog中右键,选择“插入ActiveX控件”,在弹出的对话框中选择 TeeChart Pro ActiveX contorl v5,确定。

2.2设置已插入的teechart控件,双击,在弹出的对话框中添加series,选择ColorGrid,设置series属性,设置Grid中的ColorRange,起始为红色,终止为蓝色,中间色为绿色,确定;

2.3右键,选中teechart控件,选择“添加变量”,如m_tchart,确定

2.4添加teechart中的其他类,如CSeries,CColorGridSeries等,在解决方案选择工程,右键“添加”->"TypeLib的MFC类",在弹出的对话框选择“注册表”,在可用的类型库选择“TeeChart Pro ActiveX contorl v5<1.0>”,在接口选择要添加的类。常用的类有IAix,IAxe,ISeries(和其他类型的series,图表中的数据系列),IExport(导出,xxxExport),ILegend(数据序列的图例),IZoom(缩放)等。

2.5 删除mfc类构造函数中的“m_tchart(0)”。

3.使用ColorGrid

3.1使用AddArrayXYZ,快速添加数据,使用ColorGrid例子:

void CMFCDemoDlg::CreateColorGrid()
{
//image colorgrid
COleSafeArray XX;//color grid的横坐标
COleSafeArray ZZ;//color grid的纵坐标,与我们常用的Y一样
COleSafeArray YY;//表示的是颜色的值,不是Y轴
DWORD numElements = *;//数据长度
XX.Create(VT_I4,,&numElements);
YY.Create(VT_I4,,&numElements);
ZZ.Create(VT_I4,,&numElements); int xidx=,yidx=;
long i=;
for (xidx=;xidx<;xidx++)
{
for (yidx=;yidx<;yidx++)
{
double val = rand()%;//二维数组对应的值
YY.PutElement(&i,&val);
XX.PutElement(&i,&xidx);
ZZ.PutElement(&i,&yidx);
i++;
}
}
((CColorGridSeries)((CSeries)m_tchart.Series()).get_asColorGrid()).AddArrayXYZ(XX,YY,ZZ);//类型转换
}

3.2实现一维距离像例子

首先定义一维距离像结构体:

typedef struct stru_HRRP{
int FFTLen;//FFT length
int DataLen;// data array length
double *Time;//Time[DataLen],一维距离像时间数组
double *LC;// LC[FFTLen], 一维距离像标尺数组
double **HRRP;//HRRP[DataLen][FFTLen] hrrp数据,二维数组
}stru_HRRP;

绘图代码(添加TeeChart参见2.1-2.5,以下由代码创建ColorGrid,可忽略步骤2.2):

void CreateHRRPGraph(stru_HRRP& hrrp){
m_tchart.ClearChart();
m_tchart.AddSeries(scColorGrid);//创建colorgrid
((CAspect)m_tchart.get_Aspect()).put_View3D(FALSE);//关闭3D显示 CColorGridSeries series = ((CColorGridSeries)((CSeries)m_tchart.Series()).get_asColorGrid());
series.put_UseColorRange(TRUE);//设置ColorRange
series.put_StartColor(RGB(,,));
series.put_MidColor(RGB(,,));
series.put_EndColor(RGB(,,));
((CLegend)m_tchart.get_Legend()).put_Visible(TRUE);//图例显示数据颜色强度
series.put_IrregularGrid(TRUE);//显示精度问题 COleSafeArray XX;//color grid的横坐标
COleSafeArray ZZ;//color grid的纵坐标,与我们常用的Y一样
COleSafeArray YY;//表示的是颜色的值,不是Y轴
DWORD numElements = hrrp.DataLen * hrrp.FFTLen;
XX.Create(VT_R8,,&numElements);
YY.Create(VT_R8,,&numElements);
ZZ.Create(VT_R8,,&numElements); int xidx=,yidx=;
long i=;
for (xidx=;xidx<hrrp.DataLen;xidx++)
{
for (yidx=;yidx<hrrp.FFTLen;yidx++)
{
double xval = hrrp.LC[yidx];
double yval = hrrp.HRRP[xidx][yidx];
double zval = hrrp.Time[xidx];
XX.PutElement(&i,&xval);
YY.PutElement(&i,&yval);
ZZ.PutElement(&i,&zval);
i++;
}
}
series.AddArrayXYZ(XX,YY,ZZ);
}

done!

本文仅简单介绍了TeeChart使用ColorGrid绘制一维距离像的心得,如有问题,还望指正。

VS2010使用TeeChart5的ColorGrid绘制一维距离像的更多相关文章

  1. Matlab——图形绘制——二维平面图形

    二维平面图形 hold on ————在已画好的图形上添加新的图形 plot 是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x 及y 座标.下例可画出一条正弦曲线: > ...

  2. 【Cocos2d-X开发学习笔记】第10期:渲染框架之几何图形的绘制

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.图形的绘制 有时为了调试游戏,我们常常会需要 ...

  3. MATLAB入门教程

    MATLAB入门教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...

  4. opengl入门学习

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  5. MATLAB新手教程

    MATLAB新手教程   .MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,仅仅需将运算式直接打入提示号(>>)之後,并按入Enter键就可以.比如 ...

  6. OpenGL入门学习(转)

    OpenGL入门学习 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#includ ...

  7. (转)MATLAB入门教程

    MATLAB入门教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...

  8. OpenGL理解

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  9. 算法(第四版)C# 习题题解——1.2

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 ...

随机推荐

  1. javascript 变量解析

    1.JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析).当你使用了一个变量,然后不久 ...

  2. How does a relational database work

    http://blog.jobbole.com/100349/ http://coding-geek.com/how-databases-work/

  3. ios上比较好用的Cydia插件

    1.iFile查看系统文件 2.KuaiDial归属地数据库 3.KuaiDial电话拨号助手 4.搜狗输入法 Photo Editor 房贷计算器

  4. Linux中命令链接操作符的十个最佳实例

    转载: http://www.linuxeden.com/html/softuse/20140112/147406.html http://www.tecmint.com/chaining-opera ...

  5. C. Mobile phones

    Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows ...

  6. 使用solr的函数查询,并获取tf*idf值

    1. 使用函数df(field,keyword) 和idf(field,keyword). http://118.85.207.11:11100/solr/mobile/select?q={!func ...

  7. [Java] SSH框架笔记_S2SH整合步骤

    http://tech.ddvip.com/2009-09/1253783051134206.html http://www.blogjava.net/liu0909/archive/2009/07/ ...

  8. Java Set接口

    Set 集合不能包含重复的元素的集合.该模型数学抽象集合. Set接口只包含继承自Collection的方法,并增加了重复的元素被禁止约束性. 集还增加了对equals和hashCode操作的行为更强 ...

  9. 如何创建sequence

    我用的是在oracle中的方法,在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方. 1.Create Sequence 你首先要有CREATE ...

  10. DWZ按钮居中显示