張利利,胡文東,馬 進(jìn)
(第四軍醫(yī)大學(xué) 航空航天醫(yī)學(xué)教育部重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710032)
TeeChart控件在色覺(jué)檢查系統(tǒng)中的應(yīng)用
張利利,胡文東,馬 進(jìn)
(第四軍醫(yī)大學(xué) 航空航天醫(yī)學(xué)教育部重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710032)
為了提高國(guó)內(nèi)特殊專業(yè)人員色覺(jué)檢查的效率和準(zhǔn)確率,快速判斷被測(cè)人員的色覺(jué)識(shí)別能力,研發(fā)了一套色覺(jué)檢測(cè)系統(tǒng)。該系統(tǒng)以被測(cè)者對(duì)9種顏色的識(shí)別時(shí)長(zhǎng)為判斷依據(jù),采用基于WPF的第三方控件TeeChart實(shí)現(xiàn)色覺(jué)檢測(cè)結(jié)果的圖形化顯示、多色對(duì)比分析以及打印輸出等模塊功能。在分析研究色覺(jué)檢測(cè)系統(tǒng)組成及應(yīng)用特點(diǎn)的基礎(chǔ)上,簡(jiǎn)要介紹了該控件的組成要素,探討了其在系統(tǒng)開(kāi)發(fā)中的使用方法,結(jié)合具體實(shí)例給出了相關(guān)的開(kāi)發(fā)流程和關(guān)鍵的代碼實(shí)現(xiàn)。實(shí)際運(yùn)用結(jié)果表明,相對(duì)于傳統(tǒng)的作圖方式,基于該控件的色覺(jué)檢測(cè)系統(tǒng)具有功能更強(qiáng)、操作更靈活、分析更直觀的優(yōu)勢(shì),更適于數(shù)據(jù)曲線的分析處理,且TeeChart控件的操作界面更友好,具有較強(qiáng)的穩(wěn)定性、可擴(kuò)展性和可操作性。
TeeChart控件;WPF;數(shù)據(jù)分析;數(shù)據(jù)庫(kù);色覺(jué)
人眼對(duì)顏色的識(shí)別能力稱為顏色視覺(jué)或者色覺(jué),色覺(jué)是視覺(jué)功能的重要組成部分,它在民航飛行實(shí)踐中起著非常重要的作用[1]。飛行員依靠顏色信號(hào)分辨跑道位置,識(shí)別駕駛艙內(nèi)的各種儀表、信號(hào)燈信息等,空管員通過(guò)顏色信號(hào)與飛行員傳遞信息,并指揮其降落或者起飛。因此,色覺(jué)的檢查對(duì)航空工作的安全至關(guān)重要。
旨在研發(fā)一種定量的色覺(jué)檢測(cè)系統(tǒng),用以提高色覺(jué)檢測(cè)的準(zhǔn)確性和實(shí)用性。其檢測(cè)數(shù)據(jù)都是記錄在數(shù)據(jù)庫(kù)中,只有當(dāng)完成檢測(cè)才能查看結(jié)果,因此就需要一種方法能快速地判別某個(gè)被試者的色覺(jué)識(shí)別能力,而圖形顯示就能滿足這種需求?;舅械木幊誊浖到y(tǒng)中都提供了畫圖的控件-畫布(Canvas)[2],作圖時(shí),首先在Canvas的屬性Bitmap上作圖,然后顯示。對(duì)于顯示的曲線和圖形都必須自行設(shè)計(jì)曲線的各種屬性,因此對(duì)編程人員來(lái)說(shuō),工作量很大,效果并不是很好。為此,基于.Net 4.0軟件開(kāi)發(fā)環(huán)境[3],選用基于WPF[4-6]的第三方控件TeeChart[7],充分利用其功能較強(qiáng)、運(yùn)行效率高的顯著優(yōu)勢(shì),開(kāi)發(fā)了一套色覺(jué)檢測(cè)系統(tǒng),有效減少了編程工作量,提高了色覺(jué)檢測(cè)的效率。
1.1TeeChart簡(jiǎn)介
TeeChart是由Steema Software公司開(kāi)發(fā)的功能強(qiáng)大的圖表圖形控件[8-9],支持上百種2D和3D圖形風(fēng)格,并提供40多個(gè)數(shù)學(xué)和統(tǒng)計(jì)函數(shù)[10],加上無(wú)限制的軸和多種調(diào)色板組件,以及20余種用于圖表操作的工具,將圖表制作與操作功能發(fā)揮得淋漓盡致,為程序設(shè)計(jì)人員提供了一個(gè)高效、直觀、節(jié)省時(shí)間的編程接口,使他們可以根據(jù)自己需要制作各式各樣的圖表。同時(shí),還集成打印預(yù)覽,圖表可導(dǎo)出JPEG、GIF、BMP和Metafile等多種類型文件,并且還提供了NET、ActiveX、VCL和COM版本。TeeChart可以無(wú)縫地融入到應(yīng)用程序中,開(kāi)發(fā)人員可以在自己熟悉的開(kāi)發(fā)環(huán)境中通過(guò)編寫很少的代碼來(lái)實(shí)現(xiàn)各種復(fù)雜而友好的曲線和圖表等。
1.2TeeChart的組成元素
TeeChart由坐標(biāo)軸、序列、圖例、標(biāo)題和墻壁等主要元素[11-13]組成,分述如下:
(1)坐標(biāo)軸(Axis):共包含上、下、左、右、頂部深度、右邊深度和用戶自定義軸7個(gè)類型。由于用戶可隨意定義若干個(gè)坐標(biāo)軸,所以圖表組件中的坐標(biāo)軸是無(wú)限制的。與深度有關(guān)的坐標(biāo)軸是用于三維圖表繪制的。坐標(biāo)軸的刻度即可由程序設(shè)定,也可由圖表自動(dòng)設(shè)置。在缺省的情況下,坐標(biāo)軸可以自動(dòng)地根據(jù)不同的數(shù)據(jù)設(shè)置好標(biāo)度范圍和間隔。
(2)序列(Series):是圖表中繪制的各種幾何形狀。一個(gè)圖表中繪制的序列也是不受限制的,同一個(gè)圖表中的每個(gè)序列可以有不同的顯示類型,如柱狀圖、折線圖、餅圖等。圖表中用屬性Series數(shù)組列出它包含的所有序列。利用圖表的SeriesList[i]、Series[i]和Chart[i]屬性可以列出圖表中包含的序列。
(3)標(biāo)題和腳注(Title):圖表的標(biāo)題和腳注是一個(gè)TChartTitle對(duì)象,這些對(duì)象的顏色、位置、字體等都是可以改變的。
(4)圖例(Legend):圖例是圖表中的一個(gè)長(zhǎng)方形區(qū)域,用來(lái)對(duì)圖表中的序列進(jìn)行說(shuō)明,圖例中顯示的內(nèi)容、方式、外觀等參數(shù)都可以改變,還可設(shè)定某一個(gè)序列不在圖例中顯示。
(5)畫布(Canvas):圖表組件中的畫布是一個(gè)三維畫布對(duì)象,可以繪制各種幾何形狀和輸出文字字符,為程序員在圖表上增加新的圖形內(nèi)容提供了方便。
(6)墻壁(Walls):圖表組件提供了左面墻、地面、后墻和右面墻共四個(gè)方向的墻壁以增加三維效果,墻的顏色、厚度、透明程度都是可定義的。
2.1數(shù)據(jù)庫(kù)設(shè)計(jì)
系統(tǒng)的數(shù)據(jù)庫(kù)中有9個(gè)表,與飛行員測(cè)試相關(guān)的有3個(gè)表,即測(cè)試人員表(user)、機(jī)艙原始表(T_cabin)、機(jī)艙結(jié)果表(T_cabinres)。
測(cè)試人員表記錄被試的基本信息,ID為關(guān)鍵字,唯一標(biāo)識(shí)一位被試人員。其結(jié)構(gòu)如表1所示。
表1 被試人員表
機(jī)艙原始表記錄被試在做機(jī)艙測(cè)驗(yàn)時(shí)對(duì)每種顏色的原始記錄,其中Batch為測(cè)試批次,由程序讀取系統(tǒng)時(shí)間自動(dòng)生成;Id為被試的唯一標(biāo)識(shí);Item記錄測(cè)驗(yàn)種類,表中為機(jī)艙測(cè)驗(yàn);Color是記錄測(cè)試的顏色;Answer記錄被試的答案;Time為被試對(duì)這道題的反應(yīng)時(shí)間。每道題的反應(yīng)時(shí)間柱狀圖就是通過(guò)讀取該表數(shù)據(jù)而繪制的。其結(jié)構(gòu)如表2所示。
表2 機(jī)艙原始記錄表
機(jī)艙結(jié)果表記錄了每個(gè)批次、每個(gè)被試人員進(jìn)行測(cè)試所得的結(jié)果數(shù)據(jù),其中Batch為測(cè)試批次,由程序讀取系統(tǒng)時(shí)間自動(dòng)生成;Id為被試的唯一標(biāo)識(shí);Color是記錄的顏色;Rrate為該種顏色的正確率;Rnum為該種顏色的正確個(gè)數(shù);Time為該種顏色的反應(yīng)總時(shí)長(zhǎng)。每種顏色的反應(yīng)時(shí)間柱狀圖就是通過(guò)讀取該表數(shù)據(jù)而繪制的。其結(jié)構(gòu)如表3所示。
表3 機(jī)艙結(jié)果表
2.2數(shù)據(jù)分析流程
數(shù)據(jù)分析軟件首先從Access數(shù)據(jù)庫(kù)中的T_cabin表和T_cabinres表中讀入原始數(shù)據(jù),然后將這些數(shù)據(jù)送到設(shè)置好的TeeChart組件中,由它直觀地將每種顏色的反應(yīng)時(shí)間顯示出來(lái),為主試方便快速地做出評(píng)估提供依據(jù)。其處理流程如圖1所示。
TeeChart組件是整個(gè)系統(tǒng)數(shù)據(jù)分析部分的核心,繪圖功能都是由它完成的,開(kāi)發(fā)人員只需進(jìn)行一些簡(jiǎn)單的設(shè)置和編寫少量的代碼就可以生成復(fù)雜的圖形。與常規(guī)檢測(cè)方法相比更直觀可靠。
圖1 數(shù)據(jù)分析流程
(1)WPF中TeeChart控件的導(dǎo)入。
TeeChart控件屬于第三方控件,因此必須首先將其導(dǎo)入到Microsoft Visual Studio 2010的WPF工程中,才能進(jìn)行二次開(kāi)發(fā)。右鍵點(diǎn)擊項(xiàng)目解決方案,選擇“添加引用”→“瀏覽”→“TeeChart.WPF.dll”,點(diǎn)擊確定即可。其中TeeChart.WPF.dll是基于WPF的TeeChart動(dòng)態(tài)鏈接庫(kù)。這時(shí)就會(huì)發(fā)現(xiàn)在工具箱的數(shù)據(jù)選項(xiàng)中有一個(gè)TChart控件的圖標(biāo),如圖2所示,將它拖放到窗口中的合適位置或者在XAML文件中通過(guò)代碼加載都可以。
圖2 TChart控件
(2)定義坐標(biāo)軸。
在WinForm工程中,可以通過(guò)右擊TeeChart控件,選擇屬性進(jìn)入其設(shè)計(jì)界面[14]。而色覺(jué)檢測(cè)系統(tǒng)是基于WPF設(shè)計(jì)開(kāi)發(fā)的,WPF工程中不能通過(guò)上述方法打開(kāi)其屬性窗口,必須通過(guò)對(duì)TeeChart的各個(gè)類語(yǔ)言的修改來(lái)完成其屬性的修改,使其達(dá)到預(yù)期效果。
系統(tǒng)中需要兩個(gè)坐標(biāo)軸:
private Axis leftAxis_radar;
private Axis bottomAxis;
通過(guò)代碼設(shè)置坐標(biāo)軸的屬性。將它的Automatic設(shè)置為true,就可以根據(jù)顯示的內(nèi)容自動(dòng)調(diào)節(jié)其范圍。
leftAxis_radar.Automatic=true;
bottomAxis.FixedLabelSize=false;
bottomAxis.Automatic=true;
(1)連接數(shù)據(jù)庫(kù)。
采用Access數(shù)據(jù)庫(kù)存放測(cè)試數(shù)據(jù),使用Oledb方法連接數(shù)據(jù)庫(kù)。
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ù)視圖,并用這個(gè)視圖來(lái)填充TeeChart控件。把Series類型選為Bar,是為了讓主試方便快速地從柱狀圖的高度判別被試每種顏色的反應(yīng)時(shí)長(zhǎng)。具體實(shí)現(xiàn)方法是將每種顏色的反應(yīng)時(shí)間值存放在數(shù)據(jù)庫(kù)中,然后使用函數(shù)Add(double value,string text)添加點(diǎn),其中value為柱狀的高度,text為標(biāo)注的內(nèi)容。具體顯示如圖3所示。
DataView dtport=new DataView();
//定義一個(gè)數(shù)據(jù)視圖
//綁定曲線的軸
bar_radartime.CustomHorizAxis=bottomAxis;
bar_radartime.CustomVertAxis=leftAxis_radar;
bar_radartime.Marks.Visible=true;
bar_radartime.Marks.Style=MarksStyles.Value;
Marks表示要不要顯示標(biāo)注,圖3中上圖是不要求顯示標(biāo)注的,所以將它的Marks設(shè)為不可見(jiàn),下圖是要求顯示標(biāo)注的,故將它設(shè)為可見(jiàn)。
//查詢數(shù)據(jù)庫(kù)
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)良的特性,可以有效解決圖形顯示問(wèn)題,使得數(shù)據(jù)分析的統(tǒng)計(jì)圖表更加直觀和易于理解。
為此,以民航航空人員色覺(jué)檢查系統(tǒng)為研究對(duì)象,將TeeChart控件與色覺(jué)檢測(cè)系統(tǒng)有機(jī)結(jié)合,通過(guò)研究分析運(yùn)用TeeChart的流程并編寫數(shù)據(jù)分析顯示的主要代碼,實(shí)現(xiàn)了檢測(cè)數(shù)據(jù)的直觀顯示功能,且所開(kāi)發(fā)的操作界面友好,系統(tǒng)的功能可拓展性、可操作性和穩(wěn)定性強(qiáng)大。
[1] 楊國(guó)慶,陶 冶,王小成,等.視覺(jué)功能檢查儀在檢查飛行員視力和色覺(jué)功能中的應(yīng)用[J].空軍醫(yī)學(xué)雜志,2013,29(3):137-139.
[2] 文治洪,胡文東,李曉京,等.使用Chart控件實(shí)現(xiàn)生理信號(hào)的實(shí)時(shí)顯示[J].電子設(shè)計(jì)工程,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控件在實(shí)時(shí)檢測(cè)系統(tǒng)上位機(jī)軟件中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2015,28(6):13-15.
[8] 廖琪梅,屈景輝,李傳偉,等.TeeChart組件快速實(shí)現(xiàn)測(cè)井曲線顯示[J].測(cè)井技術(shù),2008,32(3):260-262.
[9] 劉戰(zhàn)坤,曾水平.基于DSP28335與TeeChart控件的數(shù)據(jù)采集與顯示系統(tǒng)[J].中國(guó)科技信息,2013(11):113-114.
[10] 秦建明,邵 銳.基于TeeChart控件的發(fā)電機(jī)組振動(dòng)監(jiān)測(cè)系統(tǒng)[J].機(jī)電工程,2007,24(4):64-66.
[11] 屈景輝.TeeChart應(yīng)用技術(shù)詳解-快速圖表制作工具[M].北京:中國(guó)水利水電出版社,2007.
[12] 劉朝陽(yáng),吳德操,唐躍林,等.基于TeeChart控件的自動(dòng)扶梯安全性參數(shù)顯示技術(shù)[J].測(cè)控技術(shù),2015,34(9):35-37.
[13] 李 玥.TeeChart Pro在轉(zhuǎn)臺(tái)界面控制軟件中的應(yīng)用[J].航空精密制造技術(shù),2013,49(1):57-59.
[14] 梁增欣,李維嘉.TeeChart控件介紹及在實(shí)時(shí)監(jiān)控系統(tǒng)中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),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ò)出版時(shí)間
時(shí)間:2017-07-19
國(guó)家自然科學(xué)基金-民航聯(lián)合基金(U1333101)
張利利(1980-),女,碩士,高級(jí)實(shí)驗(yàn)師,從事醫(yī)學(xué)設(shè)備方面的研制開(kāi)發(fā)工作;胡文東,碩士,研究員,研究方向?yàn)樯硇睦磉x拔、飛行員選拔;馬 進(jìn),博士,副研究員,研究方向?yàn)樾睦韺W(xué)。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170719.1108.016.html
10.3969/j.issn.1673-629X.2017.10.029
計(jì)算機(jī)技術(shù)與發(fā)展2017年10期