原創(chuàng)|其它|編輯:郝浩|2012-10-15 16:17:13.000|閱讀 638 次
概述:用Teechart畫二維成像圖,指的是類似Matlab的imagesc這種命令畫出來的圖像
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
這兒說的二維圖,指的是類似Matlab的imagesc這種命令畫出來的圖像,用顏色來表示數(shù)據(jù)的大小或者說強弱。簡單地說,就是一個二維數(shù)組,里面存放的數(shù)據(jù)用顏色來表示。做雷達SAR圖像、ISAR圖像經(jīng)常要用這個來顯示。
Teechart可以完成這個功能。自己琢磨了半天,終于搞清楚一點點——網(wǎng)上關(guān)于這方面的資料太少了。
我用的是Series中的3D-> Colorgrid
步驟:
(1)在VC界面上添加了Teechart控件之后,手動添加Series,它會自動命名為Series0、Series1。多個Series,會依次從上往下排列。注意:這個名字中的0/1跟排名沒有關(guān)系,即你可以吧Series1移到Series0之前。最終代碼中的m_tchart.Series(0),這個0指的是在Series列表中第一項!!而并不一定是名字叫做Series0的那項!類似地,m_tchart.Series(1) 指的是排名第二的那個曲線,跟名字無關(guān)。
(2)添加這個Series,選擇的類型是3D->Colorgrid。添加完畢后出現(xiàn)在Series列表里頭,雙擊可以編輯一些屬性。例如Grid 3D->Range,可以選擇你想要的用來表示數(shù)值大小的顏色類型(Start,middle,end)。
(3)可以根據(jù)需要編輯tchart的顯示屬性,在此不表。
(4)添加代碼:
COleSafeArray XX; //color grid的橫坐標 COleSafeArray ZZ; //color grid的縱坐標,與我們常用的Y一樣 COleSafeArray YY; // 表示的是顏色的值,不是Y軸 DWORD numElements[] = {180001}; XX.Create(VT_I4, 1, numElements); YY.Create(VT_R8, 1, numElements); ZZ.Create(VT_I4, 1, numElements); long xIndex; long zIndex; long i=0; for (xIndex=0; xIndex<90; xIndex++) { for (zIndex=0; zIndex<2000; zIndex++) { double val =zIndex*xIndex; //二維數(shù)組對應(yīng)的值 YY.PutElement(&i,&val); XX.PutElement(&i,&xIndex); ZZ.PutElement(&i,&zIndex); i++; } } m_tchart.Series(0).GetAsColorGrid().AddArrayXYZ(XX,YY, ZZ);
(6)上面這段代碼的一些說明。
首先,因為Series(0)已經(jīng)被我們在設(shè)計階段就手動添加了,所以沒有必要在代碼中加上
m_tchart.AddSeries(0);
其次,上面說了,這個m_tchart.Series(0)里面的0跟Seriesx名字中的0或者1無關(guān),這兒的0表示你在列表中的第一項。
再次,m_tchart.Series(0).GetAsColorGrid()表示這個Series類型是ColorGrid,如果我們改用m_tchart.Series(0).GetAsPolarGrid(),程序運行時會報錯。因為我們在設(shè)計階段添加的Series類型是ColorGrid,而不是PolarGrid。
最后,因為使用了GetAsColorGrid,需要在頭文件中包含:
#include ".\teechart\PolarGridSeries.h"
.\teechart\是我自己存放的目錄名字,根據(jù)你自己的路徑修改。
還是那句話,如果在編譯的時候報錯信息是使用了未聲明的類,即把對應(yīng)的類的.h文件包含進來即可。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:搜狐博客