一种矢量图形工具的设计与实现
摘 要
矢量图形系统的开发是利用VC++开发地理信息系统(GIS系统)的重点和难点。利用VC++进行矢量图形系统的开发主要是利用VC++的设备环境DC提供的功能进行图形绘制和采用面向对象的方法来组织和管理矢量图形数据。
该论文分析了矢量图形系统的基本结构,采用了面向对象的思想,设计了图形对象的类继承层次,其中基类对象又派生出直线、圆弧(圆)和曲线,文本等类,给出了矢量图形系统类的组织结构。并且从整体功能结构到单独的类的具体实现和视图的实现,鼠标交互绘制,图形操作,图形选中、移动、删除等各个方面开发实现了一个基本的矢量图形工具系统。完成了处理点、线、圆、面、标注文本等图形元素的功能,并具有处理图例(即图形块)的能力;具有相对完善的图形操作功能,方便的图形I/O功能,以及图形移动、删除的功能。
关键词:面向对象;图形操作;I/O;目 录
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
致 谢 24
声 明 25
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的基本矢量图形系统。因此,本次毕业设计在MFC AppWizard 产生的应用程序Draw的基础上,具体组织一个基本矢量图形系统的开发。该过程涉及与矢量图形系统设计有关的类及其主要操作。从矢量图形系统的类组织,文档管理,视图组织,图形交互绘制,图形操作,图形选中,图形旋转,图形移动,图形删除等各个方面。