日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC下绘制曲线工具Teechart使用

發(fā)布時間:2025/3/12 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC下绘制曲线工具Teechart使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Teechart版本為TeeChart.Pro.v5.ActiveX

一、簡單應(yīng)用:

1.????安裝完畢之后,給工程添加一個類,選擇來自Typelib的MFC 類,選擇TeeChart ActiveX Control V5和下面的ISereis。

2.????在工具箱中添加選項卡,然后右鍵添加項,選擇TeeChart pro control V5。

3.????在界面編輯上托進去一個新建的工具。雙擊控件,add一個Series。

4. 右擊控件,添加一個變量。在主界面的.cpp里添加#include“CSeries”,并書寫畫曲線代碼

CSeries mycs = (CSeries)m_Chart_RCS.Series(0);

for (int i = 0; i < 100; i++)

mycs.AddNullXY(i,2*i+10, NULL);

二、TeeChartY軸分段顯示

1.??????在MFC資源編輯界面中增加一個Teechart控件,添加兩條Series,均為line。并在Axis頁下添加一個Custom 0.此處實際上已經(jīng)添加了一個坐標(biāo)軸對象,可以在程序中直接調(diào)用。其原理類似于Series。


2.??????給工程添加兩個類CAxis和CAxes。添加類的方法同添加CSeries。

3.??????思路即為對上圖中的Left和Custom進行屬性編輯。包括坐標(biāo)的最大最小值,以及在Y軸上的起止位置,注意起止位置是按照百分比計算的。須特別注意曲線Series須與坐標(biāo)軸綁定,put_VerticalAxisCustom(0)函數(shù)實現(xiàn)將數(shù)據(jù)綁定在Custom 0上。這樣才可以顯示曲線。(如果將對應(yīng)的坐標(biāo)軸Custom設(shè)置為disvisible,則曲線也會消失,道理很簡單,沒有坐標(biāo)軸哪來的曲線)代碼如下:

//第一個坐標(biāo)空間

?????? CSeries mycs0 =(CSeries)m_chart_RDE.Series(0);//提取出控件中的Series0

?????? CAxes coord = (CAxes)m_chart_RDE.get_Axis();//提取出控件中的坐標(biāo)軸

?????? CAxis left0 = (CAxis)coord.get_Left();//提取出坐標(biāo)軸中的Left Axis

?????? left0.put_Automatic(FALSE);//對Left Axis的相關(guān)設(shè)置:自動大小關(guān)閉

?????? left0.put_Minimum(0);//最小值

?????? left0.put_Maximum(30);//最大值

?????? left0.put_Increment(0);//增量

?????? left0.put_StartPosition(0);//最小值開始的位置,百分比

?????? left0.put_EndPosition(50);//最大值結(jié)束的位置,百分比

?????? left0.put_PositionPercent(0);//在X軸上的偏移量

?????? for (int i = 0; i <25; i++)

?????????? mycs0.AddXY(i,i, NULL,RGB(255,0,0));

?

?????? //第二個坐標(biāo)空間

?????? CSeries mycs1 =(CSeries)m_chart_RDE.Series(1);

?????? mycs1.put_VerticalAxisCustom(0);//將數(shù)據(jù)綁定在custom0

?????? CAxes coord1 =(CAxes)m_chart_RDE.get_Axis();

?????? CAxis left1 = (CAxis)coord1.get_Custom(0);//須在控件中添加一個Custom

?????? left1.put_Automatic(FALSE);

?????? left1.put_Minimum(0);

?????? left1.put_Maximum(30);

?????? left1.put_Increment(0);

?????? left1.put_StartPosition(55);

?????? left1.put_EndPosition(100);

?????? for (int i = 0; i <25; i++)

?????????? mycs1. AddXY( i, i, NULL, RGB(0,255,0));

效果圖:


三、Teechart實時曲線繪制顯示

1.MFC下添加定時器的方法:即添加OnTimer消息。定義afx_msg void OnTimer(UINT_PTR nIDEvent);以及ON_WM_TIMER。啟動定時器用SetTimer:

??????

UINT_PTR SetTimer(
????????????UINT_PTR nIDEvent,
???????????? UINTnElapse,
??????????? ?void(CALLBACK* lpfnTimer
?????? )(HWND,
????????? UINT,
???????? ?UINT_PTR,
??????????DWORD
?????? )
????? ?);

?????? 參數(shù)nIDEvent指定一個非零的定時器ID;參數(shù)nElapse指定間隔時間,單位為毫秒;參數(shù)lpfnTimer指定一個回調(diào)函數(shù)的地址,如果該參數(shù)為NULL,則WM_TIMER消息被發(fā)送到應(yīng)用程序的消息隊列,并被CWnd對象處理。如果此函數(shù)成功則返回一個新的定時器的ID,我們可以使用此ID通過KillTimer成員函數(shù)來銷毀該定時器,如果函數(shù)失敗則返回0。如:

SetTimer(1,frequence,NULL);//啟動Id為1的定時器,時間間隔為FreQuence。

不再使用定時器時,可以銷毀它。銷毀定時器需使用CWnd類的KillTimer成員函數(shù),如:KillTimer(1);//銷毀ID為1的定時器。

2.在菜單中添加一個“運行”的按鈕,在其響應(yīng)函數(shù)里實現(xiàn)Teechart坐標(biāo)軸的初始化和啟動定時器以及其他一些初始化工作。比如計時器的計數(shù)標(biāo)志csj。

void CMainFrame::OnGorun()

{

??? // TODO: 在此添加命令處理程序代碼請

??? KillTimer(1);

??? csj = 0;

? ??CAxescoordAxes = (CAxes)m_tchart.get_Axis();//提取出控件中的坐標(biāo)軸

????coordAxes.put_Visible(TRUE);//顯示坐標(biāo)軸

? ??coordAxes.AddCustom(FALSE);//動態(tài)添加一個Custom

? ??CAxisleftAxis = (CAxis)coordAxes.get_Custom(i);//須在控件中添加一個Custom

? ??leftAxis.put_Automatic(FALSE);//對Left Axis的相關(guān)設(shè)置:自動大小關(guān)閉

? ??leftAxis.put_Minimum(0);//最小值

????leftAxis.put_Maximum(30);//最大值

? ??leftAxis.put_Increment(0);//增量任意

? ? leftAxis.put_StartPosition(0);//最小值開始的位置,百分比

? ??leftAxis.put_EndPosition(100);//最大值結(jié)束的位置,百分比

????m_tchart.AddSeries(0);

? ??//啟動定時器

????SetTimer(1,frequence,NULL);

}

3.OnTimer毀掉函數(shù)里添加繪圖代碼:本例中編寫了一個函數(shù)。但是需注意在Ontimer下需要對csj++。

void CMainFrame::drawCurves()

{

? ? ? ? ? ?mycs?= (CSeries)m_tchart.series(0);//提取出控件中的Series i

?????????? mycs.put_VerticalAxisCustom(0);//將數(shù)據(jù)綁定在custom i

?????????? mycs.AddXY(csj,rand()%25, NULL,RGB(255,12*i,20*i));

?}

??? CAxes coordAxesBottom = (CAxes)m_tchart.get_Axis();//設(shè)置橫軸滾動

??? CAxis bottomAxis = (CAxis)coordAxesBottom.get_Bottom();

??? bottomAxis.Scroll(1.0,TRUE);

}

四、

總結(jié)

以上是生活随笔為你收集整理的MFC下绘制曲线工具Teechart使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。