张利利,胡文东,马 进
(第四军医大学 航空航天医学教育部重点实验室,陕西 西安 710032)
TeeChart控件在色觉检查系统中的应用
张利利,胡文东,马 进
(第四军医大学 航空航天医学教育部重点实验室,陕西 西安 710032)
为了提高国内特殊专业人员色觉检查的效率和准确率,快速判断被测人员的色觉识别能力,研发了一套色觉检测系统。该系统以被测者对9种颜色的识别时长为判断依据,采用基于WPF的第三方控件TeeChart实现色觉检测结果的图形化显示、多色对比分析以及打印输出等模块功能。在分析研究色觉检测系统组成及应用特点的基础上,简要介绍了该控件的组成要素,探讨了其在系统开发中的使用方法,结合具体实例给出了相关的开发流程和关键的代码实现。实际运用结果表明,相对于传统的作图方式,基于该控件的色觉检测系统具有功能更强、操作更灵活、分析更直观的优势,更适于数据曲线的分析处理,且TeeChart控件的操作界面更友好,具有较强的稳定性、可扩展性和可操作性。
TeeChart控件;WPF;数据分析;数据库;色觉
人眼对颜色的识别能力称为颜色视觉或者色觉,色觉是视觉功能的重要组成部分,它在民航飞行实践中起着非常重要的作用[1]。飞行员依靠颜色信号分辨跑道位置,识别驾驶舱内的各种仪表、信号灯信息等,空管员通过颜色信号与飞行员传递信息,并指挥其降落或者起飞。因此,色觉的检查对航空工作的安全至关重要。
旨在研发一种定量的色觉检测系统,用以提高色觉检测的准确性和实用性。其检测数据都是记录在数据库中,只有当完成检测才能查看结果,因此就需要一种方法能快速地判别某个被试者的色觉识别能力,而图形显示就能满足这种需求。基本所有的编程软件系统中都提供了画图的控件-画布(Canvas)[2],作图时,首先在Canvas的属性Bitmap上作图,然后显示。对于显示的曲线和图形都必须自行设计曲线的各种属性,因此对编程人员来说,工作量很大,效果并不是很好。为此,基于.Net 4.0软件开发环境[3],选用基于WPF[4-6]的第三方控件TeeChart[7],充分利用其功能较强、运行效率高的显著优势,开发了一套色觉检测系统,有效减少了编程工作量,提高了色觉检测的效率。
1.1TeeChart简介
TeeChart是由Steema Software公司开发的功能强大的图表图形控件[8-9],支持上百种2D和3D图形风格,并提供40多个数学和统计函数[10],加上无限制的轴和多种调色板组件,以及20余种用于图表操作的工具,将图表制作与操作功能发挥得淋漓尽致,为程序设计人员提供了一个高效、直观、节省时间的编程接口,使他们可以根据自己需要制作各式各样的图表。同时,还集成打印预览,图表可导出JPEG、GIF、BMP和Metafile等多种类型文件,并且还提供了NET、ActiveX、VCL和COM版本。TeeChart可以无缝地融入到应用程序中,开发人员可以在自己熟悉的开发环境中通过编写很少的代码来实现各种复杂而友好的曲线和图表等。
1.2TeeChart的组成元素
TeeChart由坐标轴、序列、图例、标题和墙壁等主要元素[11-13]组成,分述如下:
(1)坐标轴(Axis):共包含上、下、左、右、顶部深度、右边深度和用户自定义轴7个类型。由于用户可随意定义若干个坐标轴,所以图表组件中的坐标轴是无限制的。与深度有关的坐标轴是用于三维图表绘制的。坐标轴的刻度即可由程序设定,也可由图表自动设置。在缺省的情况下,坐标轴可以自动地根据不同的数据设置好标度范围和间隔。
(2)序列(Series):是图表中绘制的各种几何形状。一个图表中绘制的序列也是不受限制的,同一个图表中的每个序列可以有不同的显示类型,如柱状图、折线图、饼图等。图表中用属性Series数组列出它包含的所有序列。利用图表的SeriesList[i]、Series[i]和Chart[i]属性可以列出图表中包含的序列。
(3)标题和脚注(Title):图表的标题和脚注是一个TChartTitle对象,这些对象的颜色、位置、字体等都是可以改变的。
(4)图例(Legend):图例是图表中的一个长方形区域,用来对图表中的序列进行说明,图例中显示的内容、方式、外观等参数都可以改变,还可设定某一个序列不在图例中显示。
(5)画布(Canvas):图表组件中的画布是一个三维画布对象,可以绘制各种几何形状和输出文字字符,为程序员在图表上增加新的图形内容提供了方便。
(6)墙壁(Walls):图表组件提供了左面墙、地面、后墙和右面墙共四个方向的墙壁以增加三维效果,墙的颜色、厚度、透明程度都是可定义的。
2.1数据库设计
系统的数据库中有9个表,与飞行员测试相关的有3个表,即测试人员表(user)、机舱原始表(T_cabin)、机舱结果表(T_cabinres)。
测试人员表记录被试的基本信息,ID为关键字,唯一标识一位被试人员。其结构如表1所示。
表1 被试人员表
机舱原始表记录被试在做机舱测验时对每种颜色的原始记录,其中Batch为测试批次,由程序读取系统时间自动生成;Id为被试的唯一标识;Item记录测验种类,表中为机舱测验;Color是记录测试的颜色;Answer记录被试的答案;Time为被试对这道题的反应时间。每道题的反应时间柱状图就是通过读取该表数据而绘制的。其结构如表2所示。
表2 机舱原始记录表
机舱结果表记录了每个批次、每个被试人员进行测试所得的结果数据,其中Batch为测试批次,由程序读取系统时间自动生成;Id为被试的唯一标识;Color是记录的颜色;Rrate为该种颜色的正确率;Rnum为该种颜色的正确个数;Time为该种颜色的反应总时长。每种颜色的反应时间柱状图就是通过读取该表数据而绘制的。其结构如表3所示。
表3 机舱结果表
2.2数据分析流程
数据分析软件首先从Access数据库中的T_cabin表和T_cabinres表中读入原始数据,然后将这些数据送到设置好的TeeChart组件中,由它直观地将每种颜色的反应时间显示出来,为主试方便快速地做出评估提供依据。其处理流程如图1所示。
TeeChart组件是整个系统数据分析部分的核心,绘图功能都是由它完成的,开发人员只需进行一些简单的设置和编写少量的代码就可以生成复杂的图形。与常规检测方法相比更直观可靠。
图1 数据分析流程
(1)WPF中TeeChart控件的导入。
TeeChart控件属于第三方控件,因此必须首先将其导入到Microsoft Visual Studio 2010的WPF工程中,才能进行二次开发。右键点击项目解决方案,选择“添加引用”→“浏览”→“TeeChart.WPF.dll”,点击确定即可。其中TeeChart.WPF.dll是基于WPF的TeeChart动态链接库。这时就会发现在工具箱的数据选项中有一个TChart控件的图标,如图2所示,将它拖放到窗口中的合适位置或者在XAML文件中通过代码加载都可以。
图2 TChart控件
(2)定义坐标轴。
在WinForm工程中,可以通过右击TeeChart控件,选择属性进入其设计界面[14]。而色觉检测系统是基于WPF设计开发的,WPF工程中不能通过上述方法打开其属性窗口,必须通过对TeeChart的各个类语言的修改来完成其属性的修改,使其达到预期效果。
系统中需要两个坐标轴:
private Axis leftAxis_radar;
private Axis bottomAxis;
通过代码设置坐标轴的属性。将它的Automatic设置为true,就可以根据显示的内容自动调节其范围。
leftAxis_radar.Automatic=true;
bottomAxis.FixedLabelSize=false;
bottomAxis.Automatic=true;
(1)连接数据库。
采用Access数据库存放测试数据,使用Oledb方法连接数据库。
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)设置TeeChart的Series。
public static Steema.TeeChart.WPF.Styles.Bar bar_radartime=
null;
bar_radartime=new Steema.TeeChart.WPF.Styles.Bar();
(3)填充TeeChart控件。
根据设定的查询条件,获取满足查询条件的数据视图,并用这个视图来填充TeeChart控件。把Series类型选为Bar,是为了让主试方便快速地从柱状图的高度判别被试每种颜色的反应时长。具体实现方法是将每种颜色的反应时间值存放在数据库中,然后使用函数Add(double value,string text)添加点,其中value为柱状的高度,text为标注的内容。具体显示如图3所示。
DataView dtport=new DataView();
//定义一个数据视图
//绑定曲线的轴
bar_radartime.CustomHorizAxis=bottomAxis;
bar_radartime.CustomVertAxis=leftAxis_radar;
bar_radartime.Marks.Visible=true;
bar_radartime.Marks.Style=MarksStyles.Value;
Marks表示要不要显示标注,图3中上图是不要求显示标注的,所以将它的Marks设为不可见,下图是要求显示标注的,故将它设为可见。
//查询数据库
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作为优秀的ActiveX图形控件,具有许多优良的特性,可以有效解决图形显示问题,使得数据分析的统计图表更加直观和易于理解。
为此,以民航航空人员色觉检查系统为研究对象,将TeeChart控件与色觉检测系统有机结合,通过研究分析运用TeeChart的流程并编写数据分析显示的主要代码,实现了检测数据的直观显示功能,且所开发的操作界面友好,系统的功能可拓展性、可操作性和稳定性强大。
[1] 杨国庆,陶 冶,王小成,等.视觉功能检查仪在检查飞行员视力和色觉功能中的应用[J].空军医学杂志,2013,29(3):137-139.
[2] 文治洪,胡文东,李晓京,等.使用Chart控件实现生理信号的实时显示[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控件在实时检测系统上位机软件中的应用[J].工业控制计算机,2015,28(6):13-15.
[8] 廖琪梅,屈景辉,李传伟,等.TeeChart组件快速实现测井曲线显示[J].测井技术,2008,32(3):260-262.
[9] 刘战坤,曾水平.基于DSP28335与TeeChart控件的数据采集与显示系统[J].中国科技信息,2013(11):113-114.
[10] 秦建明,邵 锐.基于TeeChart控件的发电机组振动监测系统[J].机电工程,2007,24(4):64-66.
[11] 屈景辉.TeeChart应用技术详解-快速图表制作工具[M].北京:中国水利水电出版社,2007.
[12] 刘朝阳,吴德操,唐跃林,等.基于TeeChart控件的自动扶梯安全性参数显示技术[J].测控技术,2015,34(9):35-37.
[13] 李 玥.TeeChart Pro在转台界面控制软件中的应用[J].航空精密制造技术,2013,49(1):57-59.
[14] 梁增欣,李维嘉.TeeChart控件介绍及在实时监控系统中的应用[J].工业控制计算机,2010,23(12):9-10.
ApplicationofTeeChartControlinChromatoptometrySystem
ZHANG Li-li,HU Wen-dong,MA Jin
(Key Laboratory of Aerospace Medical of Ministry of Education,Fourth 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">网络出版时间
时间:2017-07-19
国家自然科学基金-民航联合基金(U1333101)
张利利(1980-),女,硕士,高级实验师,从事医学设备方面的研制开发工作;胡文东,硕士,研究员,研究方向为生理心理选拔、飞行员选拔;马 进,博士,副研究员,研究方向为心理学。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170719.1108.016.html
10.3969/j.issn.1673-629X.2017.10.029