绘制一维距离像原理:使用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. 如何为Linux安装Go语言

    导读 Go 语言又称为 golang, 是由 Google 最初开发的一种开源编程语言,其在设计时就遵循了简单.安全和速度的 3 大原则.Go 语言具有多种调试.测试.分析和代码审查工具,如今 Go ...

  2. javascript实现经纬度与地址的互转

    最近项目中会用到将地址转换为经纬的.从出来,还一直未遇到过这类问题,下来自己提前学习了,将自己所学的记录在案. 在网上找了很多资料,最后确定了,百度的API,有实现相关的接口(API地址).使用API ...

  3. [Java] 遍历HashMap和HashMap转换成List的两种方式

    遍历HashMap和HashMap转换成List   /** * convert the map to the list(1) */ public static void main(String[] ...

  4. linux_过程问题记录

    常见问题1:-bash: rz: command not found 解决: 安装lrzsz: 解决命令:yum -y install lrzsz 常见问题2:linux 解压乱码 解决11.到htt ...

  5. xe5 android tts(Text To Speech)

    xe5 android  tts(Text To Speech) TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话. 以下代码实现xe5 开发的文本转 ...

  6. 跨域 HTTP 请求

    如果你需要从不同的服务器(不同域名)上获取数据就需要使用跨域 HTTP 请求. 跨域请求在网页上非常常见.很多网页从不同服务器上载入 CSS, 图片,Js脚本等. 在现代浏览器中,为了数据的安全,所有 ...

  7. javascript中Math ceil(),floor(),round()三个函数的对比

    Math.ceil()执行的是向上舍入 Math.floor()执行向下舍入 Math.round()执行标准舍入 一下是一些补充: ceil():将小数部分一律向整数部分进位. 如: Math.ce ...

  8. 剑指Offer38 数组所有数字出现两次,只有两个出现了一次,找出这两个数字

    /************************************************************************* > File Name: 38_Number ...

  9. hdu-5597 GTW likes function(欧拉函数+找规律)

    题目链接: GTW likes function Time Limit: 4000/2000 MS (Java/Others)     Memory Limit: 131072/131072 K (J ...

  10. codeforces 613B B. Skills(枚举+二分+贪心)

    题目链接: B. Skills time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...