平臺:VC2010,TeeChart5
問題描述:實時顯示采集的資料成趨勢曲線。當在已有趨勢圖中再添加一條曲線時
1. 若X軸坐標設定label為value,正常

2.若X軸設為標簽值(即時間)顯示,資料重疊

我想讓所有的趨勢顯示的X時間軸分刻度保持一致!
這個問題困擾了很長時間,求教有經驗的前輩指點一二。
uj5u.com熱心網友回復:
自繪是早晚要學會的技能。uj5u.com熱心網友回復:
仔細觀察第二個圖,至少應該是有2個時間顯示的太近導致它們互相重疊。TeeChart沒有用過,不知道具體情況,但估計應該是可以設定顯示的一些樣式,比如密度、間隔什么的,可以嘗試看下手冊或者檔案看有沒有什么說明
uj5u.com熱心網友回復:
這個是一個控制元件,只能去使用沒有原始碼
uj5u.com熱心網友回復:
恩,謝謝!
其實資料基本是英文的,而且用在VC方面的也不多。
uj5u.com熱心網友回復:
我下了一個 http://www.pc0359.cn/downinfo/39772.html,里面有很多種型別,不知道你用的是哪一種,你說下你是如何畫出來這個圖的,我試試,沒有看到哪里可以設定x軸的label型別uj5u.com熱心網友回復:
我用的是TeeChart 5,VC2010平臺。
方法一:通過設定X軸為時間格式
1. CValueList類的put_DateTime(true)設定X軸為日期,CAxisAlbel類的成員函式put_DateTimeFormat(_T("hh:mm:ss"))設定X軸的格式
2. 定時器中,COleDateTime curTime = COleDateTime::GetCurrentTime();
通過CAxis的成員函式SetMinMax(curTime.m_dt - 300/86400. , curTime.m_dt)設定X軸范圍,引數為double,隨時間變動
3. 定時器中,CSeries的成員函式繪點 AddXY(curTime.dblX,Y值,_T(""),0)
缺陷:以上方法只能設定到秒,我想精確到毫秒(或者目前我個人沒找到設定為毫秒的方法)
方法二:通過設定label標簽為時間字串實作
1. 在定時器中,獲取當前時刻時間
SYSTEMTIME sys;
GetLocalTime(&sys); //獲取系統時間
CString csTime;
csTime.Format(_T("%02d:%02d:%02d:%03d\r\n%04d-%02d-%02d"),sys.wHour,sys.wMinute,sys.wSecond,sys.wMillisec onds,sys.wYear,sys.wMonth,sys.wDay); //時間字串,精確到毫秒
2. 定時器中繪點
int iCount = 0; (定為全域變數)
CSeries的成員函式AddXY(iCount,Y值,csTime,0);
3. 定時器中設定X軸范圍,隨時間變動
SetMinMax(iCount-1200,iCount)
4. 在TeeChart控制元件設定中,設X軸label顯示為text
缺陷:在已有曲線的基礎上添加一條時,X軸label字體會重疊,如第二張圖所示
uj5u.com熱心網友回復:
具體使用的是哪一個型別的控制元件?TeeChart ChartEditorPanel
TeeChart ChartGrid
TeeChart ChartGridNavigator
TeeChart ChartPageNavigator
TeeChart Commander
TeeChart Editor
TeeChart ListBox
TeeChart PreviewPanel
TeeChart Print Previewer
TeeChart Pro Activex control
TeeChart Series XML Source
TeeChart Series TestSource
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
你好,問題解決了。
利用SYSTEMTIME sys;
GetLocalTime(&sys);獲得毫秒值,除以1000轉為double型
利用COleDateTime 的成員變數m_dt獲得秒級的double值
兩者相加
另外,TeeChart中put_DateTimeFormat(_T("hh:mm:ss.zzz)) 設定到毫秒
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/86855.html
標籤:界面
上一篇:sql資料庫求助
下一篇:何解?
