VS2010使用TeeChart5的ColorGrid繪制一維距離像


繪制一維距離像原理:使用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 = 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繪制一維距離像的心得,如有問題,還望指正。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM