绘制一维距离像原理:使用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. android genymation eclipse安装

    http://www.cnblogs.com/1114250779boke/p/3657996.html

  2. InAction-根据LBS数据手机用户移动轨迹

    看了以后学了不少通信运营商关于用户数据记录的知识啊. 本来想从网上找真实数据集的,但是网上的数据不合这个DEMO的场景要求,于是用作者提供的python脚本生成一定数据量的数据来实践(当然,这些数据结 ...

  3. Masonry 布局 cell 高度适应的一种方案(实现类似朋友圈简单布局)

    来源:伯乐在线 - 夏天然后 链接:http://ios.jobbole.com/89298/ 点击 → 申请加入伯乐在线专栏作者 前言: 我模仿的是微博的布局所以也就没有 评论动态刷新cell. 1 ...

  4. IIS 之 HTTP 错误 403.14 - Forbidden

    错误如下图所示: 其实,这个提示下面已经交代了怎么解决问题,现在告诉大家具体的详细步骤. 方法一:配置" 默认文档 " 方法二:启用" 目录浏览 "

  5. iOS retain、strong、weak、assign

    iOS retain.strong.weak.assign strong与weak是由ARC新引入的对象变量属性xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和a ...

  6. leetcode 题解:Remove Duplicates from Sorted Array(已排序数组去重)

    题目: Given a sorted array, remove the duplicates in place such that each element appear only once and ...

  7. web前端开发(3)

    css 类命名使用骆驼命名法,可以与划线法结合使用. 骆驼命名法用于区别单词,划线命名用于表达从属关系. 尽量不要使用子选择器,否则容易引起冲突隐患. css可以分为 base.common.page ...

  8. maven安装仓库中不存在的jar包

    这里以ojdbc6.jar作为案例 首先我的ojdbc6.jar放在D盘的根目录D:\ojdbc6.jar 然后我们打开cmd命令窗口,运行命令:mvn install:install-file -D ...

  9. 使用jsoup进行网页内容抓取

    对网页内容的抓取比较的感兴趣,于是就简单的学习了一下,如果不使用任何的框架去抓取网页的内容,感觉有点难度,我就简单点来吧,这里所使用的jsoup框架,抓取网页的内容与使用jquery选择网页的内容差不 ...

  10. R语言快速入门

    R语言是针对统计分析和数据科学的功能全面的开源语言,R的官方网址:http://www.r-project.org/  在Windows环境下安装R是很方便的 R语言的两种运行模式:交互模式和批处理模 ...