teechart的addarray_用Teechart画二维成像图
這兒說的二維圖,指的是類似Matlab的imagesc這種命令畫出來的圖像,用顏色來表示數據的大小或者說強弱。簡單地說,就是一個二維數組,里面存放的數據用顏色來表示。做雷達SAR圖像、ISAR圖像經常要用這個來顯示。
teechart可以完成這個功能。自己琢磨了半天,終于搞清楚一點點——網上關于這方面的資料太少了。
我用的是Series中的3D-> Colorgrid
步驟:
(1)準備工作參見我上一篇博文:
(2)在VC界面上添加了Teechart控件之后,手動添加Series,它會自動命名為Series0、Series1。多個Series,會依次從上往下排列。注意:這個名字中的0/1跟排名沒有關系,即你可以吧Series1移到Series0之前。最終代碼中的m_tchart.Series(0),這個0指的是在Series列表中第一項!!而并不一定是名字叫做Series0的那項!類似地,m_tchart.Series(1)?指的是排名第二的那個曲線,跟名字無關。
(3)添加這個Series,選擇的類型是3D->Colorgrid。添加完畢后出現在Series列表里頭,雙擊可以編輯一些屬性。例如Grid 3D->Range,可以選擇你想要的用來表示數值大小的顏色類型(Start,middle,end)。
(4)可以根據需要編輯tchart的顯示屬性,在此不表。
(5)添加代碼:
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);
(6)上面這段代碼的一些說明。
首先,因為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文件包含進來即可。
總結
以上是生活随笔為你收集整理的teechart的addarray_用Teechart画二维成像图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TeeChart插入
- 下一篇: 从三个维度分析DeFi连环清算问题的解决