張利利,胡文東,馬 進
(第四軍醫(yī)大學 航空航天醫(yī)學教育部重點實驗室,陜西 西安 710032)
TeeChart控件在色覺檢查系統(tǒng)中的應(yīng)用
張利利,胡文東,馬 進
(第四軍醫(yī)大學 航空航天醫(yī)學教育部重點實驗室,陜西 西安 710032)
為了提高國內(nèi)特殊專業(yè)人員色覺檢查的效率和準確率,快速判斷被測人員的色覺識別能力,研發(fā)了一套色覺檢測系統(tǒng)。該系統(tǒng)以被測者對9種顏色的識別時長為判斷依據(jù),采用基于WPF的第三方控件TeeChart實現(xiàn)色覺檢測結(jié)果的圖形化顯示、多色對比分析以及打印輸出等模塊功能。在分析研究色覺檢測系統(tǒng)組成及應(yīng)用特點的基礎(chǔ)上,簡要介紹了該控件的組成要素,探討了其在系統(tǒng)開發(fā)中的使用方法,結(jié)合具體實例給出了相關(guān)的開發(fā)流程和關(guān)鍵的代碼實現(xiàn)。實際運用結(jié)果表明,相對于傳統(tǒng)的作圖方式,基于該控件的色覺檢測系統(tǒng)具有功能更強、操作更靈活、分析更直觀的優(yōu)勢,更適于數(shù)據(jù)曲線的分析處理,且TeeChart控件的操作界面更友好,具有較強的穩(wěn)定性、可擴展性和可操作性。
TeeChart控件;WPF;數(shù)據(jù)分析;數(shù)據(jù)庫;色覺
人眼對顏色的識別能力稱為顏色視覺或者色覺,色覺是視覺功能的重要組成部分,它在民航飛行實踐中起著非常重要的作用[1]。飛行員依靠顏色信號分辨跑道位置,識別駕駛艙內(nèi)的各種儀表、信號燈信息等,空管員通過顏色信號與飛行員傳遞信息,并指揮其降落或者起飛。因此,色覺的檢查對航空工作的安全至關(guān)重要。
旨在研發(fā)一種定量的色覺檢測系統(tǒng),用以提高色覺檢測的準確性和實用性。其檢測數(shù)據(jù)都是記錄在數(shù)據(jù)庫中,只有當完成檢測才能查看結(jié)果,因此就需要一種方法能快速地判別某個被試者的色覺識別能力,而圖形顯示就能滿足這種需求?;舅械木幊誊浖到y(tǒng)中都提供了畫圖的控件-畫布(Canvas)[2],作圖時,首先在Canvas的屬性Bitmap上作圖,然后顯示。對于顯示的曲線和圖形都必須自行設(shè)計曲線的各種屬性,因此對編程人員來說,工作量很大,效果并不是很好。為此,基于.Net 4.0軟件開發(fā)環(huán)境[3],選用基于WPF[4-6]的第三方控件TeeChart[7],充分利用其功能較強、運行效率高的顯著優(yōu)勢,開發(fā)了一套色覺檢測系統(tǒng),有效減少了編程工作量,提高了色覺檢測的效率。
1.1TeeChart簡介
TeeChart是由Steema Software公司開發(fā)的功能強大的圖表圖形控件[8-9],支持上百種2D和3D圖形風格,并提供40多個數(shù)學和統(tǒng)計函數(shù)[10],加上無限制的軸和多種調(diào)色板組件,以及20余種用于圖表操作的工具,將圖表制作與操作功能發(fā)揮得淋漓盡致,為程序設(shè)計人員提供了一個高效、直觀、節(jié)省時間的編程接口,使他們可以根據(jù)自己需要制作各式各樣的圖表。同時,還集成打印預(yù)覽,圖表可導出JPEG、GIF、BMP和Metafile等多種類型文件,并且還提供了NET、ActiveX、VCL和COM版本。TeeChart可以無縫地融入到應(yīng)用程序中,開發(fā)人員可以在自己熟悉的開發(fā)環(huán)境中通過編寫很少的代碼來實現(xiàn)各種復雜而友好的曲線和圖表等。
1.2TeeChart的組成元素
TeeChart由坐標軸、序列、圖例、標題和墻壁等主要元素[11-13]組成,分述如下:
(1)坐標軸(Axis):共包含上、下、左、右、頂部深度、右邊深度和用戶自定義軸7個類型。由于用戶可隨意定義若干個坐標軸,所以圖表組件中的坐標軸是無限制的。與深度有關(guān)的坐標軸是用于三維圖表繪制的。坐標軸的刻度即可由程序設(shè)定,也可由圖表自動設(shè)置。在缺省的情況下,坐標軸可以自動地根據(jù)不同的數(shù)據(jù)設(shè)置好標度范圍和間隔。
(2)序列(Series):是圖表中繪制的各種幾何形狀。一個圖表中繪制的序列也是不受限制的,同一個圖表中的每個序列可以有不同的顯示類型,如柱狀圖、折線圖、餅圖等。圖表中用屬性Series數(shù)組列出它包含的所有序列。利用圖表的SeriesList[i]、Series[i]和Chart[i]屬性可以列出圖表中包含的序列。
(3)標題和腳注(Title):圖表的標題和腳注是一個TChartTitle對象,這些對象的顏色、位置、字體等都是可以改變的。
(4)圖例(Legend):圖例是圖表中的一個長方形區(qū)域,用來對圖表中的序列進行說明,圖例中顯示的內(nèi)容、方式、外觀等參數(shù)都可以改變,還可設(shè)定某一個序列不在圖例中顯示。
(5)畫布(Canvas):圖表組件中的畫布是一個三維畫布對象,可以繪制各種幾何形狀和輸出文字字符,為程序員在圖表上增加新的圖形內(nèi)容提供了方便。
(6)墻壁(Walls):圖表組件提供了左面墻、地面、后墻和右面墻共四個方向的墻壁以增加三維效果,墻的顏色、厚度、透明程度都是可定義的。
2.1數(shù)據(jù)庫設(shè)計
系統(tǒng)的數(shù)據(jù)庫中有9個表,與飛行員測試相關(guān)的有3個表,即測試人員表(user)、機艙原始表(T_cabin)、機艙結(jié)果表(T_cabinres)。
測試人員表記錄被試的基本信息,ID為關(guān)鍵字,唯一標識一位被試人員。其結(jié)構(gòu)如表1所示。
表1 被試人員表
機艙原始表記錄被試在做機艙測驗時對每種顏色的原始記錄,其中Batch為測試批次,由程序讀取系統(tǒng)時間自動生成;Id為被試的唯一標識;Item記錄測驗種類,表中為機艙測驗;Color是記錄測試的顏色;Answer記錄被試的答案;Time為被試對這道題的反應(yīng)時間。每道題的反應(yīng)時間柱狀圖就是通過讀取該表數(shù)據(jù)而繪制的。其結(jié)構(gòu)如表2所示。
表2 機艙原始記錄表
機艙結(jié)果表記錄了每個批次、每個被試人員進行測試所得的結(jié)果數(shù)據(jù),其中Batch為測試批次,由程序讀取系統(tǒng)時間自動生成;Id為被試的唯一標識;Color是記錄的顏色;Rrate為該種顏色的正確率;Rnum為該種顏色的正確個數(shù);Time為該種顏色的反應(yīng)總時長。每種顏色的反應(yīng)時間柱狀圖就是通過讀取該表數(shù)據(jù)而繪制的。其結(jié)構(gòu)如表3所示。
表3 機艙結(jié)果表
2.2數(shù)據(jù)分析流程
數(shù)據(jù)分析軟件首先從Access數(shù)據(jù)庫中的T_cabin表和T_cabinres表中讀入原始數(shù)據(jù),然后將這些數(shù)據(jù)送到設(shè)置好的TeeChart組件中,由它直觀地將每種顏色的反應(yīng)時間顯示出來,為主試方便快速地做出評估提供依據(jù)。其處理流程如圖1所示。
TeeChart組件是整個系統(tǒng)數(shù)據(jù)分析部分的核心,繪圖功能都是由它完成的,開發(fā)人員只需進行一些簡單的設(shè)置和編寫少量的代碼就可以生成復雜的圖形。與常規(guī)檢測方法相比更直觀可靠。
圖1 數(shù)據(jù)分析流程
(1)WPF中TeeChart控件的導入。
TeeChart控件屬于第三方控件,因此必須首先將其導入到Microsoft Visual Studio 2010的WPF工程中,才能進行二次開發(fā)。右鍵點擊項目解決方案,選擇“添加引用”→“瀏覽”→“TeeChart.WPF.dll”,點擊確定即可。其中TeeChart.WPF.dll是基于WPF的TeeChart動態(tài)鏈接庫。這時就會發(fā)現(xiàn)在工具箱的數(shù)據(jù)選項中有一個TChart控件的圖標,如圖2所示,將它拖放到窗口中的合適位置或者在XAML文件中通過代碼加載都可以。
圖2 TChart控件
(2)定義坐標軸。
在WinForm工程中,可以通過右擊TeeChart控件,選擇屬性進入其設(shè)計界面[14]。而色覺檢測系統(tǒng)是基于WPF設(shè)計開發(fā)的,WPF工程中不能通過上述方法打開其屬性窗口,必須通過對TeeChart的各個類語言的修改來完成其屬性的修改,使其達到預(yù)期效果。
系統(tǒng)中需要兩個坐標軸:
private Axis leftAxis_radar;
private Axis bottomAxis;
通過代碼設(shè)置坐標軸的屬性。將它的Automatic設(shè)置為true,就可以根據(jù)顯示的內(nèi)容自動調(diào)節(jié)其范圍。
leftAxis_radar.Automatic=true;
bottomAxis.FixedLabelSize=false;
bottomAxis.Automatic=true;
(1)連接數(shù)據(jù)庫。
采用Access數(shù)據(jù)庫存放測試數(shù)據(jù),使用Oledb方法連接數(shù)據(jù)庫。
private StringstrConn="Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+AppDomain.CurrentDomain.BaseDirectory+" \visual.accdb";
……
OleDbConnection con;
con=new OleDbConnection(strConn);
try
{
con.Open();
}
catch(System.Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
(2)設(shè)置TeeChart的Series。
public static Steema.TeeChart.WPF.Styles.Bar bar_radartime=
null;
bar_radartime=new Steema.TeeChart.WPF.Styles.Bar();
(3)填充TeeChart控件。
根據(jù)設(shè)定的查詢條件,獲取滿足查詢條件的數(shù)據(jù)視圖,并用這個視圖來填充TeeChart控件。把Series類型選為Bar,是為了讓主試方便快速地從柱狀圖的高度判別被試每種顏色的反應(yīng)時長。具體實現(xiàn)方法是將每種顏色的反應(yīng)時間值存放在數(shù)據(jù)庫中,然后使用函數(shù)Add(double value,string text)添加點,其中value為柱狀的高度,text為標注的內(nèi)容。具體顯示如圖3所示。
DataView dtport=new DataView();
//定義一個數(shù)據(jù)視圖
//綁定曲線的軸
bar_radartime.CustomHorizAxis=bottomAxis;
bar_radartime.CustomVertAxis=leftAxis_radar;
bar_radartime.Marks.Visible=true;
bar_radartime.Marks.Style=MarksStyles.Value;
Marks表示要不要顯示標注,圖3中上圖是不要求顯示標注的,所以將它的Marks設(shè)為不可見,下圖是要求顯示標注的,故將它設(shè)為可見。
//查詢數(shù)據(jù)庫
dtport=((App)Application.Current).db.searchport(((App)Application.Current).userid);
if(dtport.Table.Rows.Count>0)
{
for(int i=0;i<21;i++)
{
bar_radartime.Add(double.Parse(dtport.Table.Rows[i][9].ToString()),dtport.Table.Rows[i][4].ToString());
}
//增加該曲線
tChart1.Series.Add(bar_radartime);
}
圖3 TeeChart柱狀圖
TeeChart作為優(yōu)秀的ActiveX圖形控件,具有許多優(yōu)良的特性,可以有效解決圖形顯示問題,使得數(shù)據(jù)分析的統(tǒng)計圖表更加直觀和易于理解。
為此,以民航航空人員色覺檢查系統(tǒng)為研究對象,將TeeChart控件與色覺檢測系統(tǒng)有機結(jié)合,通過研究分析運用TeeChart的流程并編寫數(shù)據(jù)分析顯示的主要代碼,實現(xiàn)了檢測數(shù)據(jù)的直觀顯示功能,且所開發(fā)的操作界面友好,系統(tǒng)的功能可拓展性、可操作性和穩(wěn)定性強大。
[1] 楊國慶,陶 冶,王小成,等.視覺功能檢查儀在檢查飛行員視力和色覺功能中的應(yīng)用[J].空軍醫(yī)學雜志,2013,29(3):137-139.
[2] 文治洪,胡文東,李曉京,等.使用Chart控件實現(xiàn)生理信號的實時顯示[J].電子設(shè)計工程,2011,19(5):63-66.
[3] Richter J.CLR via c#[M].Redmond:Microsoft Press,2006.
[4] MacDonald M. Pro WPF 4.5 in C#:windows presentation foundation in .NET 4.5[M].New York,USA:Apress Media,2012.
[5] Sells C,Griffitbs I.Programming WPF[M].California,USA:O’Reilly Media Inc.,2007.
[6] Nathan A.Windows presentation foundation unleashed[M].Carmel,Indiana:Sams Publishing,2006.
[7] 陳俊良,葉 林,葛俊鋒,等.TeeChart控件在實時檢測系統(tǒng)上位機軟件中的應(yīng)用[J].工業(yè)控制計算機,2015,28(6):13-15.
[8] 廖琪梅,屈景輝,李傳偉,等.TeeChart組件快速實現(xiàn)測井曲線顯示[J].測井技術(shù),2008,32(3):260-262.
[9] 劉戰(zhàn)坤,曾水平.基于DSP28335與TeeChart控件的數(shù)據(jù)采集與顯示系統(tǒng)[J].中國科技信息,2013(11):113-114.
[10] 秦建明,邵 銳.基于TeeChart控件的發(fā)電機組振動監(jiān)測系統(tǒng)[J].機電工程,2007,24(4):64-66.
[11] 屈景輝.TeeChart應(yīng)用技術(shù)詳解-快速圖表制作工具[M].北京:中國水利水電出版社,2007.
[12] 劉朝陽,吳德操,唐躍林,等.基于TeeChart控件的自動扶梯安全性參數(shù)顯示技術(shù)[J].測控技術(shù),2015,34(9):35-37.
[13] 李 玥.TeeChart Pro在轉(zhuǎn)臺界面控制軟件中的應(yīng)用[J].航空精密制造技術(shù),2013,49(1):57-59.
[14] 梁增欣,李維嘉.TeeChart控件介紹及在實時監(jiān)控系統(tǒng)中的應(yīng)用[J].工業(yè)控制計算機,2010,23(12):9-10.
ApplicationofTeeChartControlinChromatoptometrySystem
ZHANG Li-li,HU Wen-dong,MA Jin
(Key Laboratory of Aerospace Medical of Ministry of Education,F(xiàn)ourth Military Medical University,Xi’an 710032,China)
In order to improve the efficiency and accuracy of special professional chromatoptometry and judge whether testee has discernment in chromatoptometry quickly and conveniently,a chromatoptometry system is developed,which takes consideration of the discriminative ability of the response time for nine colors.The TeeChart control is employed based on the WPF to perform graphical display of the results and comparative analysis of multi-colors and print.On the basis of analyzing and researching the components and feature of chromatoptometry system,the component of the control is introduced briefly and its using in the system development is discussed,and its related developed process and key coding is given combined with concrete examples.The operation results show that the TeeChart control is more preponderant than the traditional one since the former is more powerful and more flexible.And it has been employed to analyze data intuitively and reliably,which is suitable for analyzing real time data.It has been proved that the established system has friendly interface,powerful functions,perfect stability,excellent expansibility and good effect.
TeeChart control;WPF;data analysis;database;color vision
TP311
A
1673-629X(2017)10-0136-04
2016-10-11
2017-02-14 < class="emphasis_bold">網(wǎng)絡(luò)出版時間
時間:2017-07-19
國家自然科學基金-民航聯(lián)合基金(U1333101)
張利利(1980-),女,碩士,高級實驗師,從事醫(yī)學設(shè)備方面的研制開發(fā)工作;胡文東,碩士,研究員,研究方向為生理心理選拔、飛行員選拔;馬 進,博士,副研究員,研究方向為心理學。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170719.1108.016.html
10.3969/j.issn.1673-629X.2017.10.029