日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MFC下绘制曲线工具Teechart使用

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

Teechart版本為TeeChart.Pro.v5.ActiveX

一、簡單應用:

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)添加了一個坐標軸對象,可以在程序中直接調(diào)用。其原理類似于Series。


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

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

//第一個坐標空間

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

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

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

?????? left0.put_Automatic(FALSE);//對Left Axis的相關(guān)設置:自動大小關(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));

?

?????? //第二個坐標空間

?????? 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ā)送到應用程序的消息隊列,并被CWnd對象處理。如果此函數(shù)成功則返回一個新的定時器的ID,我們可以使用此ID通過KillTimer成員函數(shù)來銷毀該定時器,如果函數(shù)失敗則返回0。如:

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

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

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

void CMainFrame::OnGorun()

{

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

??? KillTimer(1);

??? csj = 0;

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

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

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

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

? ??leftAxis.put_Automatic(FALSE);//對Left Axis的相關(guān)設置:自動大小關(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();//設置橫軸滾動

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

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

}

四、

總結(jié)

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

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