原創(chuàng)|其它|編輯:郝浩|2012-10-29 11:15:02.000|閱讀 832 次
概述:本文教你如何用TeeChart畫二維成像圖。這兒說(shuō)的二維圖,指的是類似Matlab的imagesc這種命令畫出來(lái)的圖像,用顏色來(lái)表示數(shù)據(jù)的大小或者說(shuō)強(qiáng)弱。簡(jiǎn)單地說(shuō),就是一個(gè)二維數(shù)組,里面存放的數(shù)據(jù)用顏色來(lái)表示。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
這兒說(shuō)的二維圖,指的是類似Matlab的imagesc這種命令畫出來(lái)的圖像,用顏色來(lái)表示數(shù)據(jù)的大小或者說(shuō)強(qiáng)弱。簡(jiǎn)單地說(shuō),就是一個(gè)二維數(shù)組,里面存放的數(shù)據(jù)用顏色來(lái)表示。做雷達(dá)SAR圖像、ISAR圖像經(jīng)常要用這個(gè)來(lái)顯示。對(duì)比了多款圖表,最后總結(jié)出 TeeChart 可以完成這個(gè)功能。
我用的是Series中的3D-> Colorgrid
步驟:
(1)在VC界面上添加了Teechart控件之后,手動(dòng)添加Series,它會(huì)自動(dòng)命名為Series0、Series1。多個(gè)Series,會(huì)依次從上往下排列。
注意:這個(gè)名字中的0/1跟排名沒(méi)有關(guān)系,即你可以吧Series1移到Series0之前。最終代碼中的m_tchart.Series(0),這個(gè)0指的是在Series列表中第一項(xiàng)!!而并不一定是名字叫做Series0的那項(xiàng)!類似地,m_tchart.Series(1) 指的是排名第二的那個(gè)曲線,跟名字無(wú)關(guān)。
(2)添加這個(gè)Series,選擇的類型是3D->Colorgrid。添加完畢后出現(xiàn)在Series列表里頭,雙擊可以編輯一些屬性。例如Grid 3D->Range,可以選擇你想要的用來(lái)表示數(shù)值大小的顏色類型(Start,middle,end)。
(3)可以根據(jù)需要編輯tchart的顯示屬性,在此不詳述。
(4)添加代碼:
COleSafeArray XX; //color grid的橫坐標(biāo) COleSafeArray ZZ; //color grid的縱坐標(biāo),與我們常用的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ù)組對(duì)應(yīng)的值 YY.PutElement(&i,&val); XX.PutElement(&i,&xIndex); ZZ.PutElement(&i,&zIndex); i++; } } m_tchart.Series(0).GetAsColorGrid().AddArrayXYZ(XX,YY, ZZ);
(5)上面這段代碼的一些說(shuō)明:
首先,因?yàn)?Series(0)已經(jīng)被我們?cè)谠O(shè)計(jì)階段就手動(dòng)添加了,所以沒(méi)有必要在代碼中加上 m_tchart.AddSeries(0);
其次,上面說(shuō)了,這個(gè)m_tchart.Series(0)里面的0跟Seriesx名字中的0或者1無(wú)關(guān),這兒的0表示你在列表中的第一項(xiàng)。
再次,m_tchart.Series(0).GetAsColorGrid()表示這個(gè)Series類型是ColorGrid,如果我們改用m_tchart.Series(0).GetAsPolarGrid(),程序運(yùn)行時(shí)會(huì)報(bào)錯(cuò)。因?yàn)槲覀冊(cè)谠O(shè)計(jì)階段添加的Series類型是ColorGrid,而不是PolarGrid。
最后,因?yàn)槭褂昧薌etAsColorGrid,需要在頭文件中包含:
#include ".\teechart\PolarGridSeries.h"
.\teechart\是我自己存放的目錄名字,根據(jù)你自己的路徑修改。還是那句話,如果在編譯的時(shí)候報(bào)錯(cuò)信息是使用了未聲明的類,即把對(duì)應(yīng)的類的.h文件包含進(jìn)來(lái)即可。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:搜狐博客