一种矢量图形工具的设计与实现—计算机毕业设计(论文).doc
《一种矢量图形工具的设计与实现—计算机毕业设计(论文).doc》由会员分享,可在线阅读,更多相关《一种矢量图形工具的设计与实现—计算机毕业设计(论文).doc(35页珍藏版)》请在三一办公上搜索。
1、毕业设计(论文)一种矢量图形工具的设计与实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:一种矢量图形工具的设计与实现摘 要矢量图形系统的开发是利用VC+开发地理信息系统(GIS系统)的重点和难点。利用VC+进行矢量图形系统的开发主要是利用VC+的设备环境DC提供的功能进行图形绘制和采用面向对象的方法来组织和管理矢量图形数据。该论文分析了矢量图形系统的基本结构,采用了面向对象的思想,设计了图形对象的类继承层次,其中基类对象又派生出直线、圆弧(圆)和曲线,文本等类,给出了矢量图形系统类的组织结构。并且从整体功能结构到单独的类的具体实现和视图的实现,鼠标交互绘制,图
2、形操作,图形选中、移动、删除等各个方面开发实现了一个基本的矢量图形工具系统。完成了处理点、线、圆、面、标注文本等图形元素的功能,并具有处理图例(即图形块)的能力;具有相对完善的图形操作功能,方便的图形I/O功能,以及图形移动、删除的功能。关键词:面向对象;图形操作;I/O;The Design and Realization of a Vector Graphics ToolAbstractThe Vector Graphics system is one of the most important and difficult parts for GIS(Geographical Inform
3、ation System) development with VC+. The Vector Graphics system mainly includes implementing different drawing functions under the environment provided by VC + + 6.0, organizing and managing vector-based graphic data by means of object-based methods.The idea of object-oriented is introduced in this p
4、aper, the geographic elements in the system are classified into line, arc(circle) ,curve and text. The basic classes framework is proposed by analyzing the basic structure of the vector graphics system. A basic vector graphics tool system is designed and realized from the kind of organization, the v
5、iews realization, the mouses alternately draws up, the graphics operation, the graph selected, migration, deletion, and so on. Different drawing functions are implemented, including spot, line, circle, surface and note text. The system has the ability of processing chart of symbols (namely graph blo
6、ck). The realizations of relative consummation graphics operation function and facilitates graph I/O function is given, as well as graph migration, deletion function.Key words : Object-oriented; Graph operation; I/O;目 录论文总页数:25页1引言11.1课题背景及研究的目的和意义11.2矢量图形系统11.3课题研究方法12总体设计思想22.1整体功能模块的设计22.2功能模块说明2
7、3矢量图形结构33.1基类的组织33.2视图的实现53.2.1实际坐标与逻辑坐标的转换53.2.2图形元素的绘制功能63.3图形操作方面63.3.1屏幕状态的记录63.3.2边界矩形73.3.3点选的判断和特殊显示73.3.4图形的移动93.4提高图形重画速度94矢量图形工具系统的设计104.1类的实现104.2鼠标交互绘制134.3重画技术134.3.1图形重画134.3.2重画上屏、首屏和显示全图154.4图形移动和选中后操作174.4.1图形点选功能174.4.2图形移动205系统测试21结 论22参考文献23致 谢24声 明251 引言1.1 课题背景及研究的目的和意义GIS技术已经成
8、为IT的重要组成部分。利用GIS技术开发的以多媒体,网络化,自动化为特色的信息处理,信息管理,指挥调度和决策支撑系统,已经在各领域发挥着重大作用。GIS将普通管理信息系统(MIS)与矢量图形系统结合在了一起,克服了普通MIS的局限性,大大提高了系统的直观性和可操作性,同时提供了普通MIS所不能解决的功能,如空间信息统计,空间信息计算,网络分析等。矢量图形系统是GIS的重要组成部分,也是开发GIS时的重点所在。在不同领域应用GIS,其需要的矢量图形系统的功能是有差别的。建立一个城市信息管理GIS时,要求矢量图形系统要有丰富的图形元素,丰富的线形,巨大的存储容量,完善的输入和输出功能,强大的地图编
9、辑功能,甚至需要三维显示和处理能力;而有些管理型GIS所需要的矢量图形系统,可能只需要具有简单地处理二维普通图形元素的功能。1.2 矢量图形系统一个基本的矢量图形系统一般需要如下的功能:1. 相对完善的图形元素,应具备处理点,线,面,网络等图形元素的能力,这类图形系统在很大程度上能够满足普通的管理型GIS的矢量图形系统的要求。提高矢量显示图形的功能在很大程度上能够改善矢量图形界面的质量。2. 相对完善的图形操作功能。应具备图形的放缩,移动等各种操作功能。3. 相对完善的图形输入和输出功能。应具备鼠标交互绘制功能,图形数据交互输入等功能;4. 定制和使用线形;5. 具有子图填充功能;6. 具有图
10、层,颜色,线形等的设置功能;7. 具有较大的存储容量。处理图形元素的容量应该能够达到一般实用要求。1.3 课题研究方法面向对象的程序设计,是目前程序设计的主流方法,在本设计中,将利用面向对象的程序设计和C+类的组织方法,组织建立一个基本矢量图形的图形元素类。组织实现的矢量图形系统,能够处理点类、线类、面类、网络点等类别的图形元素,其中点类图形元素有包括直线,圆,圆弧,多边形,标注文本等图形元素,针对每类图形元素组织建立起对其进行管理的C+类,并把每个图形元素作为一个独立的对象来管理。本系统的开发要求采用VC开发平台,实现一个用于GIS的基本矢量图形系统。因此,本次毕业设计在MFC AppWiz
11、ard 产生的应用程序Draw的基础上,具体组织一个基本矢量图形系统的开发。该过程涉及与矢量图形系统设计有关的类及其主要操作。从矢量图形系统的类组织,文档管理,视图组织,图形交互绘制,图形操作,图形选中,图形旋转,图形移动,图形删除等各个方面。2 总体设计思想2.1 整体功能模块的设计矢量图形工具需要实现的基本功能包括文件的打开保存、图形的编辑、基本图形元素的绘制、图形的选择和重画,本课题设计的矢量图形工具系统的功能图如图1。图1 系统功能图2.2 功能模块说明 文件菜单菜单下拉选项有新建、打开、保存三个基本功能,可以新建新的客户区、打开已经存在的文件、保存希望保留的图形。 编辑菜单下拉菜单里
12、面的撤消选项可以撤消上一步的操作,同时选中图形后可以进行复制和粘贴的操作。 鼠标绘制利用鼠标交互的功能把直线、圆、填充圆、圆弧、连续直线、多边形区域和标注文本的操作直观化,只要选中你想要的操作就可以在窗口进行相应的绘制。 选中操作基本的矢量图形系统应该具有鼠标点选图形的功能,选中图形后可以进行简单的拖动、删除等基本功能。同样的,可以选中也就可以放弃选中。被选中的图形,会以特殊的方式显示出来。 图形操作图形绘制过程中用来解决重画、放大、摆动、显示全屏的操作,这在图形工具的系统中是很重要的。3 矢量图形结构3.1 基类的组织对各类图形元素进行分析,可以发现各类图形元素具有一些相同的属性和操作功能,
13、如图形元素的颜色、线型线宽所在层等属性和得到一个图形元素是否做了删除标志等操作。把这些图形元素中共性的东西(属性和操作),组织存放在一个图形元素基类(CDraw)中,具体的图形元素由这个基类来派生。如图2。图2 基类的继承class CDraw:public CObject /图形元素基类CDraw,由CObject类派生protected:short m_ColorPen; /笔色short m_ColorBrush; /填充颜色float m_LineWide; /线宽short m_LineType; /线型float m_xScale; /线型横向参数short m_Layer; /所
14、处图层int m_id_only; /图形元素唯一标识号BOOL b_Delete; /是否处于删除状态public:CDraw();CDraw (short ColorPen,short ColorBrush,float LineWide,short LineType,float xScale,short Layer,int id_only,BOOL Delete)virtual CDraw();1) 点类图形元素组织点类图形元素,其基本特性是各个图形相互独立,且每个图形元素具有有限个固定的特征点。直线的基类是CDraw,在直线类的构造函数中,共有包括11个参数,并利用前7个参数调用基类CD
15、raw的构造函数,对基类的成员变量进行初始化,而在本身的构造函数中对直线类CLine自身的四个参数(直线的起点和终点)进行了初始化。对圆类的创建方法与直线类CLine类似,圆除了具有图形元素的基本特征外,还有自身的几何特性,可以用圆心和半径作为特征参数表示圆的几何特性。圆是圆弧的一个特例,当圆弧的弧度等于2时就是圆。所以可以从一个圆类派生得到一个圆弧类。矢量图形中可以有大量的标注文本,标注文本除了具有图形元素的基本特性外,还具有位置、字体及标注内容等自身的信息。CText类也有两个构造函数,第二个构造参数有多个参数,并利用多个参数对类的成员变量进行初始化。在构造函数中,调用了基类CDraw的构
16、造函数对基类CDraw的成员变量进行初始化。2) 线类图形元素组织线类图形元素包括很多种,如连续直线、混合线、树状线等,在本设计中,以最简单的连续直线为例进行讨论,对于其他类型线的实现方法,可根据连续直线的实现方法来开发。连续直线除了具有图形元素基类所具有的属性外,从图形的几何特征上,连续直线是由很多顶点组成的,而且顶点数目是不确定的。一条连续直线可能只有两个顶点,也可能有几千个顶点。所以,需要定义一个结构来存储连续直线的一个顶点坐标。3) 面类图形元素的组织面类图形元素一般是由闭合线围成的区域。根据围成面的边界不同,有不同形式的面,如圆形区域、椭圆形区域、复合线区域、多边形区域等。最常用的面
17、是多边形区域,其边界由一条连续直线组成。因为另外各种类型面的边界一般都可以用连续直线来近似描述,所以,本设计只讨论多边形区域的实现方法。在描述多边形区域时,最主要的是要描述边界顶点坐标。描述面的边界顶点坐标时,有不同的描述方法,一种方法是将边界由几段连续直线来描述。另外一种描述方法是直接存储区域的边界顶点坐标,即把区域的整个边界作为一条连续直线来存储。这种方法的缺点是造成坐标的重复存储;优点是具有较强的独立性,不用考虑组成区域的连续直线段。在本设计中,采用直接存储边界坐标的方式。用这种方式组织多边形区域时,组织方式与连续直线类似。所以,可以由连续直线类CPline派生出一个CPlineRgn类
18、,来对多边形区域进行管理。3.2 视图的实现3.2.1 实际坐标与逻辑坐标的转换坐标系取屏幕的左下角的点作为图形屏幕的基点。客户区的左下角的坐标定义为(m_xStart,m_yStart),并确定一个变量blc作为逻辑坐标和实际坐标的比例关系。为了实现实际坐标与逻辑坐标的转换,在视图类CDrawDoc中定义如下的四个转换函数:Public:Void DPtoVP(float x, float y, int *X,int *Y);Void VPtoDP(int x, int y, float *X, float *Y);Int DLtoVL(float l);Float VLtoDL(int l
19、);函数VPtoDP 用来将逻辑坐标转换成实际坐标,参数(x,y)是一个点的逻辑坐标,参数(*X ,*Y)返回转换后的实际坐标值。函数DLtoVL用来将实际坐标长度转换成逻辑坐标长度,参数l是一个实际坐标长度,函数返回逻辑坐标表示的长度值。为了在应用程序Draw的其他类中能够使用四个坐标转换函数,可以定义四个全局函数来实现转换操作功能,在实现文件drawview.cpp中,定义四个全局函数如下:Void DPtoVP(float x, float y, int *X, int *Y);Void VPtoDP(int x, int y, float *X, float *Y );Int DLto
20、VL(float l);Int VLtoDL(int l);如果在某个实现文件中使用这四个全局转换函数,只需在这个实现文件中的开始处加入全局函数的外部引用:Extern Void DPtoVP (float x, float y, int *X, int *Y);Extern Void VPtoDP (int x, int y, float *X, float *Y);Extern Int DLtoVL (float l);Extern Int VLtoDL (int l);3.2.2 图形元素的绘制功能利用虚函数实现各种图形元素的绘制功能。在图形元素基类CDraw中,抽象定义一个进行绘制操作
21、的虚函数。因为在应用程序 Draw中,不用CDraw类直接来创建对象,所以可以将虚函数定义成纯虚函数:Public:Virtual void Draw(CDC* pDC,int m_DrawMode,int m_DrawModel,short BackColor)=0;在各种图形元素类Cline、CCircle、CArc、CText、CPline、CPlineRgn中,重载虚函数Draw:public:virtual void Draw(CDC* pDC , int m_DrawMode, int m_DrawModel ,short BackColor);3.3 图形操作方面3.3.1 屏幕
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种 矢量 图形 工具 设计 实现 计算机 毕业设计 论文
链接地址:https://www.31ppt.com/p-3933510.html