最近参与开发的石油行业生产运行管理系统中(Java Web SSM系统),需要开发一整套石油行业专业图形软件,其中有格式复制的综合录井图,也有及时性要求较高的工程施工参数实时曲线监控,仪表盘,还有钻井行业常用的井深结构图,钻具组合图、井口装置图等。经过研究和了解市场上的相关软件,决定采用基于微软Windows .Net平台技术实现。.Net平台图形方面的开发现在可以使用两种技术分别实现,WPF图形绘制和传统WinForm GDI+绘图技术。这两种技术实现起来差别很大,由于目前团队中开发人员对WPF技术了解不够深入,学 习成本的考虑决定项目中采用传统GDI+方式绘制图形。参考和研究了网上流行的开源绘图库和INT这类商业绘图库,大部分都是实现的饼状图,曲线图,折线图,柱状图等传统的图形,而且可扩展性不强,不能支持石油行业专业的图it件系统。决定开发一套专业的可扩展的图形绘制图库,方便在石油行业的项目中使用,前期先实现使用GDI绘图,后期考虑通过扩展接口的方式支持OpenGL(全写Open Graphics Library)跨编程语言、跨平台的编程接口规格的专业的图形程序接口。
GDI是图形设备接口的英文缩写,英文详细写法:Graphics Device Interface,,图形设备接口的意思。主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形和图像输出。GDI的出现使程序员无需要关心硬件设备及设备正常驱动,就可以将应用程序的输出转化为硬件设备上的输出和构成,实现了程序开发者与硬件设备的隔离,大大方便了开发工作,这组api接口使得我们的电脑能够输出显示各种图形图像,展示丰富多彩的效果。GDI+平台提供了直线、矩形、折线、多边形、椭圆、圆形、曲线、文本、图片等几何形状基元的画法,整个图形画面由若干几何形状基元组合而成。GDI+中使用路径来表示二维图形,路径可由任意数据的几何形状基元组成,使用全局坐标。一个图形画面可表示为路径的几何。
在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。而.net framework对GDI+ 的这组api接口进行了非常好的封装,使得我们能够在不需要了解底层接口情况下进行图形系统开发。
一张图来更深入了解下GDI+
在我们图形系统应用程序中,调用.net的绘制组件绘制图形图像时,会执行类似上图中展示的调用过程。
图形文件最小的组成和编辑单位,包括对GDI+平台直接提供的直线、矩形、折线、多边形、椭圆、文本、图像等基本几何形状装饰而来的基本图元,以及由各个基本图元组合而成的组合图元。
图元的职责调用绘图接口进行图形绘制,现在支持使用GDI+绘图,后面可增加对OpenGL绘图支持。
图元中还有如画笔,画刷,高度,宽度等各种绘图属性设置,还提供图形缩放、图形移动等方法,还提供HitTest方法,让用户在图元对象内部HitTest。
二、图元Painter对象
每种图元都提供一个对应的Painter对象,用来对图元对象的生命周期进行管理,还可以控制图元绘制顺序,可对图元进行组合,以形成复杂树状关系的图元组合库。还可以提供对图元上UI事件控制与响应。
主要包括下面几个内容:
提供图元绘制布局管理,提供几种不同类型的布局方式。
Box布局
Stack布局
Flow布局
锚定布局
浮动布局
绘制点状,折线图,阶梯图,曲线折峰,曲线移峰,曲线镜像,曲线左填充,曲线右填充,曲线内部填充等功能。
曲线X坐标计算接口,同时支持对数图道坐标计算和非对数图道坐标计算实现。
基类对象,时间坐标尺,深度坐标尺
八、区域Host对象
一组代表容器的图元
结束,绘图库的i基本结构就介绍完了 ,后续会继续讲如何使用绘图库绘制图形,包括绘图库UI项目(绘图库使用相关属性窗体),绘图库Utility项目 ,
相关的Data、Model、View、Service等项目结构和代码 。