关于矢量图工具的设计Word格式.docx
《关于矢量图工具的设计Word格式.docx》由会员分享,可在线阅读,更多相关《关于矢量图工具的设计Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
![关于矢量图工具的设计Word格式.docx](https://file1.bdocx.com/fileroot1/2022-11/15/17784f7b-8ab8-4412-8ead-dcc6d0baa40a/17784f7b-8ab8-4412-8ead-dcc6d0baa40a1.gif)
TheVectorGraphicssystemisoneofthemostimportantanddifficultpartsforGIS(GeographicalInformationSystem)developmentwithVC++.TheVectorGraphicssystemmainlyincludesimplementingdifferentdrawingfunctionsundertheenvironmentprovidedbyVC++6.0,organizingandmanagingvector-basedgraphicdatabymeansofobject-basedmethods.
Theideaofobject-orientedisintroducedinthispaper,thegeographicelementsinthesystemareclassifiedintoline,arc(circle),curveandtext.Thebasicclasses’frameworkisproposedbyanalyzingthebasicstructureofthevectorgraphicssystem.Abasicvectorgraphicstoolsystemisdesignedandrealizedfromthekindoforganization,theview’srealization,themouse’salternatelydrawsup,thegraphicsoperation,thegraphselected,migration,deletion,andsoon.Differentdrawingfunctionsareimplemented,includingspot,line,circle,surfaceandnotetext.Thesystemhastheabilityofprocessingchartofsymbols(namelygraphblock).TherealizationsofrelativeconsummationgraphicsoperationfunctionandfacilitatesgraphI/Ofunctionisgiven,aswellasgraphmigration,deletionfunction.
Keywords:
Object-oriented;
Graphoperation;
I/O;
目录
论文总页数:
25页
1引言1
1.1课题背景及研究的目的和意义1
1.2矢量图形系统1
1.3课题研究方法1
2总体设计思想2
2.1整体功能模块的设计2
2.2功能模块说明2
3矢量图形结构3
3.1基类的组织3
3.2视图的实现5
3.2.1实际坐标与逻辑坐标的转换5
3.2.2图形元素的绘制功能6
3.3图形操作方面6
3.3.1屏幕状态的记录6
3.3.2边界矩形7
3.3.3点选的判断和特殊显示7
3.3.4图形的移动9
3.4提高图形重画速度9
4矢量图形工具系统的设计10
4.1类的实现10
4.2鼠标交互绘制13
4.3重画技术13
4.3.1图形重画13
4.3.2重画上屏、首屏和显示全图15
4.4图形移动和选中后操作17
4.4.1图形点选功能17
4.4.2图形移动20
5系统测试21
结论22
参考文献23
1引言
1.1课题背景及研究的目的和意义
GIS技术已经成为IT的重要组成部分。
利用GIS技术开发的以多媒体,网络化,自动化为特色的信息处理,信息管理,指挥调度和决策支撑系统,已经在各领域发挥着重大作用。
GIS将普通管理信息系统(MIS)与矢量图形系统结合在了一起,克服了普通MIS的局限性,大大提高了系统的直观性和可操作性,同时提供了普通MIS所不能解决的功能,如空间信息统计,空间信息计算,网络分析等。
矢量图形系统是GIS的重要组成部分,也是开发GIS时的重点所在。
在不同领域应用GIS,其需要的矢量图形系统的功能是有差别的。
建立一个城市信息管理GIS时,要求矢量图形系统要有丰富的图形元素,丰富的线形,巨大的存储容量,完善的输入和输出功能,强大的地图编辑功能,甚至需要三维显示和处理能力;
而有些管理型GIS所需要的矢量图形系统,可能只需要具有简单地处理二维普通图形元素的功能。
1.2矢量图形系统
一个基本的矢量图形系统一般需要如下的功能:
1.相对完善的图形元素,应具备处理点,线,面,网络等图形元素的能力,这类图形系统在很大程度上能够满足普通的管理型GIS的矢量图形系统的要求。
提高矢量显示图形的功能在很大程度上能够改善矢量图形界面的质量。
2.相对完善的图形操作功能。
应具备图形的放缩,移动等各种操作功能。
3.相对完善的图形输入和输出功能。
应具备鼠标交互绘制功能,图形数据交互输入等功能;
4.定制和使用线形;
5.具有子图填充功能;
6.具有图层,颜色,线形等的设置功能;
7.具有较大的存储容量。
处理图形元素的容量应该能够达到一般实用要求。
1.3课题研究方法
面向对象的程序设计,是目前程序设计的主流方法,在本设计中,将利用面向对象的程序设计和C++类的组织方法,组织建立一个基本矢量图形的图形元素类。
组织实现的矢量图形系统,能够处理点类、线类、面类、网络点等类别的图形元素,其中点类图形元素有包括直线,圆,圆弧,多边形,标注文本等图形元素,针对每类图形元素组织建立起对其进行管理的C++类,并把每个图形元素作为一个独立的对象来管理。
本系统的开发要求采用VC开发平台,实现一个用于GIS的基本矢量图形系统。
因此,本次毕业设计在MFCAppWizard产生的应用程序Draw的基础上,具体组织一个基本矢量图形系统的开发。
该过程涉及与矢量图形系统设计有关的类及其主要操作。
从矢量图形系统的类组织,文档管理,视图组织,图形交互绘制,图形操作,图形选中,图形旋转,图形移动,图形删除等各个方面。
2总体设计思想
2.1整体功能模块的设计
矢量图形工具需要实现的基本功能包括文件的打开保存、图形的编辑、基本图形元素的绘制、图形的选择和重画,本课题设计的矢量图形工具系统的功能图如图1。
图1系统功能图
2.2功能模块说明
Ø
文件菜单
菜单下拉选项有新建、打开、保存三个基本功能,可以新建新的客户区、打开已经存在的文件、保存希望保留的图形。
编辑菜单
下拉菜单里面的撤消选项可以撤消上一步的操作,同时选中图形后可以进行复制和粘贴的操作。
鼠标绘制
利用鼠标交互的功能把直线、圆、填充圆、圆弧、连续直线、多边形区域和标注文本的操作直观化,只要选中你想要的操作就可以在窗口进行相应的绘制。
选中操作
基本的矢量图形系统应该具有鼠标点选图形的功能,选中图形后可以进行简单的拖动、删除等基本功能。
同样的,可以选中也就可以放弃选中。
被选中的图形,会以特殊的方式显示出来。
图形操作
图形绘制过程中用来解决重画、放大、摆动、显示全屏的操作,这在图形工具的系统中是很重要的。
3矢量图形结构
3.1基类的组织
对各类图形元素进行分析,可以发现各类图形元素具有一些相同的属性和操作功能,如图形元素的颜色、线型线宽所在层等属性和得到一个图形元素是否做了删除标志等操作。
把这些图形元素中共性的东西(属性和操作),组织存放在一个图形元素基类(CDraw)中,具体的图形元素由这个基类来派生。
如图2。
图2基类的继承
classCDraw:
publicCObject//图形元素基类CDraw,由CObject类派生
{
protected:
shortm_ColorPen;
//笔色
shortm_ColorBrush;
//填充颜色
floatm_LineWide;
//线宽
shortm_LineType;
//线型
floatm_xScale;
//线型横向参数
shortm_Layer;
//所处图层
intm_id_only;
//图形元素唯一标识号
BOOLb_Delete;
//是否处于删除状态
public:
CDraw();
CDraw(shortColorPen,shortColorBrush,floatLineWide,shortLineType,floatxScale,shortLayer,intid_only,BOOLDelete)
virtual~CDraw();
};
1)点类图形元素组织
点类图形元素,其基本特性是各个图形相互独立,且每个图形元素具有有限个固定的特征点。
直线的基类是CDraw,在直线类的构造函数中,共有包括11个参数,并利用前7个参数调用基类CDraw的构造函数,对基类的成员变量进行初始化,而在本身的构造函数中对直线类CLine自身的四个参数(直线的起点和终点)进行了初始化。
对圆类的创建方法与直线类CLine类似,圆除了具有图形元素的基本特征外,还有自身的几何特性,可以用圆心和半径作为特征参数表示圆的几何特性。
圆是圆弧的一个特例,当圆弧的弧度等于2时就是圆。
所以可以从一个圆类派生得到一个圆弧类。
矢量图形中可以有大量的标注文本,标注文本除了具有图形元素的基本特性外,还具有位置、字体及标注内容等自身的信息。
CText类也有两个构造函数,第二个构造参数有多个参数,并利用多个参数对类的成员变量进行初始化。
在构造函数中,调用了基类CDraw的构造函数对基类CDraw的成员变量进行初始化。
2)线类图形元素组织
线类图形元素包括很多种,如连续直线、混合线、树状线等,在本设计中,以最简单的连续直线为例进行讨论,对于其他类型线的实现方法,可根据连续直线的实现方法来开发。
连续直线除了具有图形元素基类所具有的属性外,从图形的几何特征上,连续直线是由很多顶点组成的,而且顶点数目是不确定的。
一条连续直线可能只有两个顶点,也可能有几千个顶点。
所以,需要定义一个结构来存储连续直线的一个顶点坐标。
3)面类图形元素的组织
面类图形元素一般是由闭合线围成的区域