APP下载

应用ASP.NET技术制作船舶监控系统控件*

2011-01-15李顺亮钟碧良

舰船电子工程 2011年2期
关键词:控件指针仪表

李顺亮 钟碧良

(广州航海高等专科学校航海学院1) 广州 510725)(广州航海高等专科学校科研装备处2) 广州 510725)

应用ASP.NET技术制作船舶监控系统控件*

李顺亮1)钟碧良2)

(广州航海高等专科学校航海学院1)广州 510725)(广州航海高等专科学校科研装备处2)广州 510725)

文章应用GDI+绘图技术和ASP.NET Web编程原理,设计和制作了基于Web的船舶监控系统自定义控件,并在某船舶的综合监控系统中成功应用。

GDI+;ASP.NET;Web自定义控件

Class NumberTP311.5

1 引言

当前,开发具备Web功能的船舶综合监控是当今船舶自动化的发展方向之一,也是衡量船舶自动化水平高低的重要标志。要实现全船数据的综合集成监控,综合信息显示界面的设计是首要的一步,仪表控件的制作则是关键的一环。仪表控件指的是在显示器上以控件形式显示的仪表,仪表控件在信息显示上必须与实际仪表所表达的信息量完全相同,同时,在外观上要有真实感,符合航海人员的视觉习惯。文章运用ASP.NET Web编程原理,应用GDI+绘图技术,设计和制作了基于Web的船舶仪表控件,并且,在某船实际系统中成功应用。文章以具有代表性的船舶仪表控件为例子加以阐述,其余的仪表类似,根据其自身特点加以简单修改即可。

2 ASP.NET简述

ASP.NET是微软公司的ASP和.NET这两项技术的结合,ASP.NET改进了Web编程技术,它引入了为客户端浏览器呈现HTML,并触发可由服务器端脚本处理事件的可重用服务器控件。Web窗体的基本结构,即Web页,是围绕着控件和事件处理程序来建立的。Web窗体编程模型的一个基本原则是使可重用控件类能够封装复杂的呈现和行为逻辑,从而将基于组件的编程引入Internet中[1~2]。此外,ASP.NET允许开发者使用功能完善的.NET Framework所支持的多种编程语言,其中的服务器端脚本会被编译为中间语言(CIL),并由公共语言运行库执行,因此,执行速度比解释性脚本语言快很多。

3 自定义Web图形控件设计原理

尽管FCL的内置服务器控件种类丰富,但是它们不可能满足所有开发人员的需求,在本系统中采用的控件就要适应船舶仪表特殊外表和功能需求的控件,因此必须开发自定义Web控件。

自定义Web控件需从System.Web.UI.Control类开始,在构建从Control派生的自定义控件时,要重写其中的一些虚拟方法,并添加方法、属性和事件,使自定义Web控件与众不同[3]。Control类最重要的虚拟方法是 Render,每当控件被执行的时候,即当控件所在的页面被请求时,Render都会被调用;Render通过它的参数列表接收一个HtmlTextWriter参数,该参数的Write方法将HTML写到输出流,它使控件有机会将HTML发送到客户端,从而将自己呈现出来,并且可以呈现任何能用HTML表示的内容,比如图形图像。返回动态生成的图像就使控件突破了HTML的限制,并且使各种情况成为可能,包括呈现曲线图和饼状图、地图、设置报表格式及任何能想象得出的事物。编写图形控件的关键在于,让它的Render方法返回一个〈img〉标记。如果图像是静态的,那么该标记的Src属性就指向该图像文件;如果图像是动态生成的,Src属性就必须指向创建图像的URL地址。如下面这个〈img〉标记指向一个 URL,该URL根据问号后的字符串来动态生成一个图像:

<img src=”imagegen.ashx?shape=circle&color=red”>

Imagegen.ashx不是一个文件,而是 HT TP处理程序,对查询字符串进行解析,并返回动态生成的图像。

HT TP处理程序是一个类,它处理对服务器上的一个特定的终端(URL)或一组终端的HT TP请求。ASP.NET内置的 HTT P处理程序处理对ASPX文件、ASCX文件或其他ASP.NET文件类型的请求,此外,还可以对HT TP处理程序进行扩展,然后,在 Web.config配置文件中的条目将URL和H TTP处理程序进行映射。比如下面配置文件中的语句,将对本目录(Web.config所在目录)及其子目录下的RudderImageGen.ashx文件的请求映射到ShipWebControls程序集中的一个名为RudderImageGen的类:

假设ImageGen是一个图像生成器,它通过创建一个图像并将它返回到HT TP响应中来进行响应。当一个对ImageGen.ashx的H TTP请求到达时,ASP.NET初始化ImageGen并将请求传递给它,并调用它的ProcessRequst方法。ProcessRequest接收一个HttpContext对象,该对象的Request属性提供对查询字符串的输入参数的访问。为了返回图像,ProcessRequest将构成图像的位保存到 HttpContext.Response.OutputStream代表的数据流中。

4 GDI+图形编程技术

GDI+,Graphics Device Interface Plus(图形设备接口+)的简称。文章在制作自定义Web控件的过程中,图像生成函数内部动态生成位图的方法是应用先进GDI+技术和纯面向对象的C#语言来制作外观逼真的图形,简单又灵活。GDI+与GDI不同之处在于GDI+不仅提供了很多新功能,如像素消除锯齿技术、渐变画笔、变形和矩阵对象、独立的路径对象、基数样条、对多图像格式的支持和Alpha混和等;更重要的是它改变了编程模型,使图形编程更加简易灵活。使用GDI+,不需要使用句柄或设备上下文,而只需创建一个Graphics对象,然后以熟悉的面向对象样式调用其方

法[4~5]。

5 制作实例

5.1 舵角指示器制作

在制作过程中反复地应用到了GDI+的新功能,如Graphics对象的平移、旋转变换、像素反锯齿、渐变效果等。由于实际运行时表盘面是固定不动的,只有指针随舵角属性值的改变而旋转到相应的刻度处。因此,画指针位置的时候采用了旋转变换,当舵角属性值改变时,只须将Graphics对象旋转相应的角度,无须改变指针的坐标位置,这样的程序代码就很清晰了。但要注意,这里的旋转变换是建立在前面平移变换的基础上的,旋转变换的前后就不能使用常见的Graphics对象 ResetTransform()方法了,因为Reset()方法会破坏前面的平移变换,而应该使用Graphics对象的Save()和Restore()方法。画指针主要代码如下:

{

5.2 罗经复示器的制作

前面部分的设计思路与舵角指示器是一样的。与上例相反的是,罗经复示器的指针是固定不动的,整个表盘包括刻度线和读数是可旋转活动的,即当船首向顺指针(往右)旋转一度,罗经复示器的表盘则逆时针(向左)旋转一度,并且发出咯哒声响;同时,表盘航向读数的文字书写方向也是两两相对的。因此,为了达到以上视觉效果和功能,当航向发生改变时,首先把Graphics对象旋转变换一个负航向值,在此基础上再循环旋转360°,每隔2°画刻度线,每隔 10°画刻度读数,这样就形成了Graphics对象变换状态的两层嵌套保存,即代码中的gs1和gs2。主要代码如下:

图1和图2即为应用文章所述方法制作的控件样式。

应用同样的原理,可实现诸如流速计、主机转速表、测深仪、罗经复示器、舵角指示器、计程仪、风向仪等自定义Web控件,都具有与实际的船舶仪表完全一致的外观和功能。

6 结语

控件是构成Web窗体的基本单位。在自定义控件中封装复杂的呈现和行为逻辑,非常适合于将自己制作的控件与其他程序开发人员共享,同时他们无需考虑具体的实现细节。因此制作的船舶仪表控件在船舶信息系统中具有很强的通用性,相关技术对其它自绘制控件的制作具有很好的借鉴作用。

[1]Richard Anderson.ASP.NET高级编程[M].王毅,杨浩,等译.北京:清华大学出版社,2002

[2]Simon Robinson.C#高级编程[M].第3版.李敏波,等译.北京:清华大学出版社,2005

[3]Jeff Prosise.Microsoft.NET程序设计技术内幕[M].王铁等,译.北京:清华大学出版社,2003:277~277

[4]Eric White.GDI+程序设计[M].杨浩,张哲峰,译.北京:清华大学出版社,2002:3~5

[5]何海江.基于GDI+的颜色配置组件[J].计算机系统应用,2004(5):51

Development of Custom Web Ship Controls Applying the ASP.NET

Li Shunliang1)Zhong Biliang2)
(School of Maritime,Guangzhou M aritime College1),Guangzhou 510725)
(Department of Scientific Research Equipment,Guangzhou Maritime College2),Guangzhou 510725)

Applying the ASP.NET Web program theory and GDI+graphic programming technique,the paper designed and developed some custom web ship controls which successfully applied to the integrated control and monitoring system on a patrol ship.

GDI+,ASP.NET,custom Web control

TP311.5

2010年8月20日,

2010年9月30日

李顺亮,男,硕士,讲师,研究方向:交通信息工程及控制、航海技术等。钟碧良,男,博士,教授,研究方向:计算机信息与控制等。

猜你喜欢

控件指针仪表
浙江中控自动化仪表有限公司
浙江中控自动化仪表有限公司
基于.net的用户定义验证控件的应用分析
垂悬指针检测与防御方法*
关于.net控件数组的探讨
为什么表的指针都按照顺时针方向转动
奔驰E260车行驶过程中仪表灯熄灭
宝马745Li车制动灯常亮且组合仪表上多个故障灯点亮
浅析C语言指针
基于嵌入式MINIGUI控件子类化技术的深入研究与应用