zoukankan      html  css  js  c++  java
  • VS2010使用TeeChart5的ColorGrid绘制一维距离像

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

    1.注册TeeChart5

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

    对于win7 64位系统,复制TeeChart5.ocx到C:WindowsSysWOW64,以管理员身份运行命令提示框,输入regsvr32.exe C:WindowsSysWOW64TeeChart5.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 = 256*2;//数据长度
        XX.Create(VT_I4,1,&numElements);
        YY.Create(VT_I4,1,&numElements);
        ZZ.Create(VT_I4,1,&numElements);
    
        int xidx=0,yidx=0;
        long i=0;
        for (xidx=0;xidx<2;xidx++)
        {
            for (yidx=0;yidx<256;yidx++)
            {
                double val = rand()%128;//二维数组对应的值
                YY.PutElement(&i,&val);
                XX.PutElement(&i,&xidx);
                ZZ.PutElement(&i,&yidx);
                i++;
            }
        }
        ((CColorGridSeries)((CSeries)m_tchart.Series(0)).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(0)).get_asColorGrid()); series.put_UseColorRange(TRUE);//设置ColorRange series.put_StartColor(RGB(255,0,0)); series.put_MidColor(RGB(0,255,0)); series.put_EndColor(RGB(0,0,255)); ((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,1,&numElements); YY.Create(VT_R8,1,&numElements); ZZ.Create(VT_R8,1,&numElements); int xidx=0,yidx=0; long i=0; for (xidx=0;xidx<hrrp.DataLen;xidx++) { for (yidx=0;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绘制一维距离像的心得,如有问题,还望指正。

  • 相关阅读:
    初始值设定元素不是常量(全局变量初始化问题)
    vim配置成c++IDE
    Linux 命令总结
    gdb用法
    Elasticsearch mysql 增量同步
    Spring MVC4 纯注解配置教程
    Xposed Module开发教程1
    Glide 下载Gif文件
    Android开发艺术探索读书笔记——01 Activity的生命周期
    仿微信朋友圈图片查看-glide加载网络图片,photoview 实现缩放
  • 原文地址:https://www.cnblogs.com/hikeepgoing/p/6017605.html
Copyright © 2011-2022 走看看