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