原創|其它|編輯:龔雪|2014-06-05 14:42:25.000|閱讀 1708 次
概述:本系統中所使用的控件主要為BCGControlBar Pro和TeeChart Pro v2013 ActiveX
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
使用控件
本系統中所使用的控件主要為BCGControlBar Pro和TeeChart Pro v2013 ActiveX。
企業及項目介紹
西安創元一九九四年,一九九八年更名為西安市創元電器科技有限責任公司。專注于開發高、低壓電器試驗站數據采集處理系統及提供技術咨詢。CY3000數據采集處理系統廣泛使用在我國高、低壓電器試驗站。經過十余年磨練及經驗累積, 最新推出的CY3000D,其性能已達國際先進水平,運行穩定,測試精準,抗干擾能力強。
CY3000D數據采集測試系統是對已有系統的升級,除了需要保持原有系統的優勢之外,還需要增加新功能,提供更人性化的操作方式和功能,從而帶給用戶更好的體驗。
選擇該控件的原因
BCGControlBar是俄羅斯著名的軟件開發公司BCGSOFT的優秀產品,它是全球最早最優秀的MFC界面類庫,功能強大,顯示豐富,在國際上享有盛譽,并屢次獲獎,是VC界面設計的必備首選。開發者可以通過完全的用戶化操作構成一些類似于Microsoft Office 2000/XP/2003和Microsoft Visual Studio.NET的應用程序(用戶工具欄、菜單、鍵盤等等)。BCGControlBar庫包含了大約150多個經過精心設計,測試和具有完備文檔的MFC擴展類,這些都可以很容易的應用于需要開發的應用程序,節省大量的開發和調試時間。
Steema是全球領先的圖表類控件公司,它的VCL圖表報表控件在全球擁有極高知名度。我們公司以前的系統(CY2008、CY2009)就是用它的VCL控件構建的,因此對它的使用上有一定的技術積累。但是,由于界面部分決定采用BCGControlBar進行開發,而BCGControlBar本身帶有Chart控件,能不能用BCGControlBar本身的Chart來替代TeeChart呢?如果能夠替代,在保證系統開發進度的前提下,既省去購買TeeChart的費用,節約了開發成本,又能減少系統對第三方組件的依賴性。為此,需要從以下幾個方面進行對比:
二者的顯示性能都很高,這一點兒可以從BCGControlBar示例程序BCGPChartExample的Huge Data例子和TeeChart Pro AX v2013 feature demo程序中的FastLine Speed DrawAll例子中可以看出。筆者并沒有對加載時間進行具體的測試,但從二者例子的顯示速度上已經能夠感覺出二者性能都能夠滿足系統的要求。
由于行業的特殊要求,我們系統要求所采集的數據要能夠進行多通道顯示,每個通道都有獨立的Y坐標軸(包括Y軸標題)和一個共同的X坐標軸,通道之間要求無縫排列,通道連接處的Y軸標簽顯示需要自定義格式顯示,并且要能夠高亮顯示當前鼠標點擊的通道。如圖(1)所示:
對于這個需求來講,BCGControlBar和TeeChart都沒有直接的解決方案可以用,他們雖然都有多坐標軸功能,如圖(2)、圖(3)所示:
但是,它們都滿足不了系統對通道連接處無縫的要求,需要我們在此基礎上另行開發實現。它們都提供了自定義坐標軸標簽的功能,通過此功能我們可以實現多通道無縫排列時Y坐標軸刻度的自定義顯示。對于通道高亮顯示,TeeChart有著更簡單的方法,它提供了一個ColorBoard工具,能夠設置它的顏色和透明度,通過對它的位置進行動態調整來表示當前點擊的通道。
我們系統的用戶需要對加載的數據進行放大(區域放大和沿X軸放大)查看和分析,有時候需要進行多次放大甚至是無級放大。BCGControlBar內置的縮放功能沒有TeeChart豐富,如果要實現區域放大,使用BCGControlBar時,還需要進行單獨編碼處理,而TeeChart已有此內置功能。
另外,TeeChart還提供其它多種工具,比如DragPoint工具可以用來拖動圖表Series、Cursor工具可以添加可以交互的橫縱光標等,這些工具與圖表的交互不需要再寫額外的代碼。
總上所述,圖表控件我們最終選用了TeeChart。
控件應用情況
創元數據采集系統(CY3000D)的主要功能是通過控制硬件數據采集卡進行數據采集,并對采集的結果進行分析查看,并最終提供試驗報告。由于程序功能相對比較多,因此程序界面采用Ribbon風格。界面設計是VC++的弱項,但是BCGControlBar提供了一個Ribbon Designer,用它來設計程序主界面就簡單輕松多了。數據采集系統程序主界面如圖(4)所示。
程序整體上可以分為3個主要部分:采集參數設置(包括硬件設置、通道設置、公式設置和顯示設置)、數據分析和試驗報告。系統將硬件設置、公式設置和通道設置的一些參數傳給采集卡,采集卡依據這些參數進行數據采集后傳遞給采集系統,采集系統將采集到的數據按照顯示設置進行顯示。
BCGControlBar的CBCGPGridCtrl不論是性能還是功能上,都是相當出色的,它內置了豐富的單元格類型,比如ComboBox、CheckBox、Button、ColorPicker等等(詳見BCGPGridExample例子中的Cell Types示例)。使用這些內置的單元格類型,可以很方便地實現通道設置功能,如圖(5)所示。
然而,在實際開發過程中,這些內置單元格類型還不能完全滿足我們的要求,我們需要有一種單元格類型,可以設置更為復雜的參數,于是我們從CBCGPGridItem繼承一個我們自定義的單元格類型的類(CGridPopupWndItem),該類有一個成員變量CPopupDialig,在點擊單元格事件中動態調整CPopupDialog的位置,就可以實現下拉對話框的效果。如圖(6)所示:
有了BCGControlBar這些靈活的擴展機制和豐富的擴展類,可以很便捷地實現硬件設置和顯示設置,如圖(7)所示:
圖(7)
對于采集到的波形數據,要能夠對這些波形進行輸出打印,輸出的對象可以是真實的打印機或者是虛擬打印機,打印的質量要和系統中看到的相一致,特別是打印出的波形不能有鋸齒。TeeChart內置打印機對象(Printer),調用它的BeginDoc、PrintChart/PrintPartial以及EndDoc等方法來實現出圖打印,但是它會根據打印區域的大小對TeeChart中的數據進行處理,導致最終打印質量不能夠滿足要求。另外,我們的數據采集系統中除了主顯示窗口外,還有一個放大窗口,因此需要對TeeChart的打印功能進行擴展,雖然TeeChart的Printer對象的PrintPartial方法能夠解決多窗口多TeeChart同時輸出的問題,但是打印質量依然是無法保證的。TeeChart提供了輸出為EMF格式文件的功能(EMF是一種矢量文件格式,可以始終保持圖形的精度),通過對EMF文件的拼接,最終解決了多窗口中TeeChart輸打印的質量問題。效果如圖(8)、圖(9)所示:
需要注意的是,TeeChart輸出EMF格式文件時,字體會顯得特別的小,因此,在輸出之前需要對先將相關字體變大,等輸出完畢后,再將字體大小恢復到原來就可以了。
另外,系統對波形數據進行分析時,需要為波形添加點標注、X方向標注、Y方向標注和斜標注等,而且要能夠對點標注、X方向標注以及Y方向的標注能夠進行拖動。TeeChart提供了豐富的內置工具,使用Rectangle工具可以繪制標簽,使用ArrowSeries可以繪制標注的錨點和錨線,使用DragPoint工具可以實現標注的拖動。圖(9)為標注的實際顯示效果,高亮色表示當前標注為活動標注。
CY3000D有兩個縱光標分別為主輔光標,除用不同的顏色進行區分之外,另外每個光標的上端還標有數字,這種數字上標的實現途徑有多種,比如可以用使用位圖圖標來實現,也可以使用TeeChart內置的Rectangle工具來動態跟隨來實現,但是這兩種方案都有一種缺陷,那就是上端的數字標注在光標快速移動時會有延遲,給人一種反應遲鈍的感覺,用戶體驗不好。最后采用的方案是使用TeeChart的Canvas對象直接進行繪制,從這一點兒也可以看出TeeChart的功能強大!
我還想說...
BCGControlBar真不愧為MFC框架下最為優秀的組件之一,通過它極大地提高了系統的開發進度,是MFC框架下的首選。在系統的逐步開發過程中,才發現原來TeeChart的功能是如此強大,感覺它在Chart的表示方面幾乎達到了無所不能地步!
另外,在系統開發前期,我們需要對軟件(主要是Chart控件)進行調研,主要對控件的功能予以初步的評估,看是否能夠滿足我們的需求,由于我們對要調研的軟件并不是十分的熟悉,有些深層次的問題還得和國外的開發商進行咨詢,溝通難而且反饋慢?;鄱脊臼袌霾亢图夹g部在這時給予了我們極大的支持和幫助,我們所提出的問題都能及時得到解答。在這里我代表西安創元向慧都公司的曾經給予我們大力支持的市場部和技術部表示衷心的感謝!
聲明
本人提交此案例參加慧都第一屆案例大賽,并同意本案例內容用于慧都科技和該控件廠商的市場宣傳。
案例提交人信息
姓名:梁紹輝
職位:開發工程師
所在企業:西安創元電器科技
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網