GDI+绘制测井曲线的面向对象设计与实现 下载本文

内容发布更新时间 : 2024/5/2 11:19:32星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

GDI+绘制测井曲线的面向对象设计与实现

作者:李瑶 赵正文 周杨朋

来源:《电脑知识与技术》2013年第31期

摘要:GDI+提供了从简单到复杂图形绘制的大量方法。主要对如何在Visual C#.NET中使用GDI+实现测井曲线的绘制进行研究。采用面向对象的方法,使用改进后的抽象工厂模式进行图形设计,可以实现对已绘制的图形进行移动、编辑等功能,同时使系统具有较好的灵活性、扩展性和复用性。

关键词: GDI+;测井曲线;图形对象;设计模式

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)31-6999-03

国外的测井成像技术起步较早,其中美国在测井成像领域拥有先进成熟的技术。随着计算机图形技术在各行各业的应用,世界各地测井解释人员及计算机工作人员开始加强对测井成像的研究。

20世纪70年代初,我国油田内部开始使用计算机技术进行测井数据的处理和分析。在此之后,伴随着高性能计算机和图形技术的发展,测井绘图系统相继推出。测井解释向着数据处理、结论解释、成果图形展示一体化方向发展。国内具有代表性的解释系统有:Forward地层油气层测井评价系统,LogVision测井分析平台。

测井解释的发展虽然已有四十年的历史,且多数测井解释平台已经使用面向对象进行开发,但是在二次开发和复用时,需要付出大量时间做重复性工作。软件重用中重要的组件很少用于测井解释平台软件。因此本次设计在实现测井曲线的同时,结合改进的抽象工厂模式和组合模式部分内容,封装绘图组件同时方便增加新的图形类型对象(仪器串图、地层测试成果图等),使系统具有较好的可扩展性、灵活性和方便性,同时达到复用的效果。 1 相关技术 1.1 GDI+

GDI(Graphics Device Interface,图形设备接口) 的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出,是Windows API(Application Programming Interface)的一个重要组成部分,是Windows图形显示程序与实际物理设备之间的桥梁。GDI使得用户不需要注重具体设备的细节,只需要在一个虚拟环境(逻辑设备)中进行操作。实现了程序开发人员与硬件设备的隔离,为开发工作提供了便利。

GDI+是对GDI改进的结果,在GDI的基础上优化了原有的功能,新添加了二维矢量图形的显示、图像处理和版式处理等诸多功能,主要负责在显示屏幕和打印设备输出有关信息。

龙源期刊网 http://www.qikan.com.cn

GDI+类和接口是.NET框架的组成部分。通过使用GDI+,可以创建图形、绘制文本以及将图形图像作为对象操作,同时软件开发人员可以使用GDI+在Windows 窗体和控件上方便地呈现自定义组合图形图像。 1.2 设计模式

抽象工厂设计模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。具体工厂类在应用中只需要初始化一次,改变具体工厂即可使用不同的产品配置。这个模式的主要结构如图1所示。

AbstractProductA和AbstractProductB是两个抽象产品,它们都有可能有两种不同的实现,而ProductA1、ProductA2和ProductB1、ProductB2就是两个抽象产品的具体分类的实现。AbstractFactory是一个抽象工厂接口,它里面包含所有的产品创建的抽象方法,ConcreteFactory1和ConcreteFactory2是具体的工厂。通常是在运行时刻再创建一个ConcreteFactory类的实例,这个具体的工厂再创建具有特定实现的产品对象。 2 绘图设计

在客户端程序中,定义绘图对象,通过工厂类的创建函数,传递对象类型,生成不同的绘图对象。通过调用相同的接口函数实现不同的绘制方法。具体设计框图如图2所示。 客户端程序无需与具体图形类打交道,只需知道父类与工厂类就能创建图形,使系统的结构更加清晰,层次更加分明,有利于系统的开发与调试。如果要增加功能,需要添加新的主要图形对象时,客户端程序和父类接口都不需要做任何改动,只需增加新的图形类,在工厂类的创建对象函数中增加创建新类对象的代码即可,使系统有较强的可扩展性。

用户可以在客户端对图形进行移动、改变大小、编辑属性等操作,这些都是封装在类的内部实现,用户直接调用接口方法,从而无需了解其中的过程,很好地实现了封装。

从图2可以看到,Track类和Curve类都是由不同的子元素构成,这里提取了组合模式的概念,对这两个类进行了组合。子元素只出现在父元素的内部,因此在客户端所展示的只有父元素(Track类和Curve类),这也使得客户端简洁易懂。同时子元素内部还有更细小的元素,例如柜形框类(PRectangle),直线类(PLine),字体类(PFont),文本类(PString)等绘图基本元素类。当增加一个新的绘图类时,也可以直接使用这些绘图基本元素类,达到重用的效果,增加系统的灵活性。 3 系统实现 4 结束语

龙源期刊网 http://www.qikan.com.cn

通过上述的设计方法,可以更加灵活地实现测井曲线的绘制,以及方便地对已绘制图形对象进行移动、调整大小、编辑属性等。同时能够满足图像操作的流畅性、易用性和灵活性,通过改进的抽象工厂模式使绘图组件有更好的复用性。该文介绍的设计方法并不只局限于测井曲线的绘制,用户可以根据具体需求自定义组合图形对象,绘制属于自己的个性图形。 参考文献:

[1] 朱卫新.Visual C#.NET实现用户自定义图形编程方法[J].计算机技术与发展,2011(4):130-312.

[2] 刘昕.基于GDI+的绘图方法研究[J].硅谷,2011(15):104-105.

[3] 闫宇晗,常鑫.在C#中用GDI+实现图形动态显示[J].计算机技术与发展,2006(12):117-118.

[4] Chand M.GDI+图形程序设计[M].北京:电子工业出版社,2005.