073_矢量图形工具
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
2 总体设计思想
2.1 整体功能模块的设计
矢量图形工具需要实现的基本功能包括文件的打开保存、图形的编辑、基本图形元素的绘制、图形的选择和重画,本课题设计的矢量图形工具系统的功能图如图1。
图1 系统功能图
2.2 功能模块说明
文件菜单
菜单下拉选项有新建、打开、保存三个基本功能,可以新建新的客户区、打开已经存在的文件、保存希望保留的图形。
编辑菜单
下拉菜单里面的撤消选项可以撤消上一步的操作,同时选中图形后可以进行复制和粘贴的操作。
鼠标绘制
利用鼠标交互的功能把直线、圆、填充圆、圆弧、连续直线、多边形区域和标注文本的操作直观化,只要选中你想要的操作就可以在窗口进行相应的绘制。
选中操作
基本的矢量图形系统应该具有鼠标点选图形的功能,选中图形后可以进行简单的拖动、删除等基本功能。同样的,可以选中也就可以放弃选中。被选中的图形,会以特殊的方式显示出来。
图形操作
图形绘制过程中用来解决重画、放大、摆动、显示全屏的操作,这在图形工具的系统中是很重要的。
3 矢量图形结构 【买计算机毕业论文就到www.think58.com】
3.1 基类的组织
对各类图形元素进行分析,可以发现各类图形元素具有一些相同的属性和操作功能,如图形元素的颜色、线型线宽所在层等属性和得到一个图形元素是否做了删除标志等操作。把这些图形元素中共性的东西(属性和操作),组织存放在一个图形元素基类(CDraw)中,具体的图形元素由这个基类来派生。如图2。 think58.com
本文来自think58
[资料来源:www.THINK58.com]
think58好,好think58 [资料来源:http://www.THINK58.com]
图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; //所处图层
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();
}; think58 [来源:http://think58.com]
1) 点类图形元素组织
点类图形元素,其基本特性是各个图形相互独立,且每个图形元素具有有限个固定的特征点。
直线的基类是CDraw,在直线类的构造函数中,共有包括11个参数,并利用前7个参数调用基类CDraw的构造函数,对基类的成员变量进行初始化,而在本身的构造函数中对直线类CLine自身的四个参数(直线的起点和终点)进行了初始化。
对圆类的创建方法与直线类CLine类似,圆除了具有图形元素的基本特征外,还有自身的几何特性,可以用圆心和半径作为特征参数表示圆的几何特性。
圆是圆弧的一个特例,当圆弧的弧度等于2时就是圆。所以可以从一个圆类派生得到一个圆弧类。
矢量图形中可以有大量的标注文本,标注文本除了具有图形元素的基本特性外,还具有位置、字体及标注内容等自身的信息。CText类也有两个构造函数,第二个构造参数有多个参数,并利用多个参数对类的成员变量进行初始化。在构造函数中,调用了基类CDraw的构造函数对基类CDraw的成员变量进行初始化。
2) 线类图形元素组织
线类图形元素包括很多种,如连续直线、混合线、树状线等,在本设计中,以最简单的连续直线为例进行讨论,对于其他类型线的实现方法,可根据连续直线的实现方法来开发。 think58.com [版权所有:http://think58.com]
连续直线除了具有图形元素基类所具有的属性外,从图形的几何特征上,连续直线是由很多顶点组成的,而且顶点数目是不确定的。一条连续直线可能只有两个顶点,也可能有几千个顶点。所以,需要定义一个结构来存储连续直线的一个顶点坐标。
3) 面类图形元素的组织
面类图形元素一般是由闭合线围成的区域。根据围成面的边界不同,有不同形式的面,如圆形区域、椭圆形区域、复合线区域、多边形区域等。最常用的面是多边形区域,其边界由一条连续直线组成。因为另外各种类型面的边界一般都可以用连续直线来近似描述,所以,本设计只讨论多边形区域的实现方法。
在描述多边形区域时,最主要的是要描述边界顶点坐标。描述面的边界顶点坐标时,有不同的描述方法,一种方法是将边界由几段连续直线来描述。
另外一种描述方法是直接存储区域的边界顶点坐标,即把区域的整个边界作为一条连续直线来存储。这种方法的缺点是造成坐标的重复存储;优点是具有较强的独立性,不用考虑组成区域的连续直线段。
在本设计中,采用直接存储边界坐标的方式。用这种方式组织多边形区域时,组织方式与连续直线类似。所以,可以由连续直线类CPline派生出一个CPlineRgn类,来对多边形区域进行管理。
[来源:http://think58.com]
[版权所有:http://think58.com]