交互式二维图形绘制软件设计.doc
《交互式二维图形绘制软件设计.doc》由会员分享,可在线阅读,更多相关《交互式二维图形绘制软件设计.doc(51页珍藏版)》请在沃文网上搜索。
1、 目 录摘 要5关键字5Abstract5Key Words6前 言71. 概述81.1 图形学的发展82. 设计原理92.1 类与数据封装92.2 派生类与继承性102.3 虚函数与多态性122.4 数据存储与屏幕重绘123. 设计思路134. 设计过程与步骤154.1 建立绘图程序框架154.2 图形类的定义164.2.1 图形基类CShape164.2.2 直线类CLine174.2.3 矩形类CRectangle194.2.4 圆类CCircle214.2.5 椭圆类CEllipse244.2.6 多边形类CPolygon264.3 增加绘图菜单284.3.1 增加菜单资源284.3.
2、2 进行菜单命令的消息映射304.3.3 编写菜单命令的消息处理函数代码304.4 在屏幕上画图354.4.1 用ClassWizard映射鼠标消息354.4.2 在视图类中添加数据成员364.4.3 添加消息处理函数代码374.4.4 定制视图窗口434.5 在文档类中保存图形444.5.1 保存图形对象444.5.2 修改视图类的OnDraw成员函数454.5.3 删除文档数据454.5.4 实现文件保存和打开464.6 图形程序的编译运行47总结49参考文献50致 谢51附 录52 交互式二维图形绘制软件设计 胡兴浩(湖南城市学院计算机科学系2012届计算机科学与技术专业,湖南 益阳,4
3、13000)摘 要:随着计算机硬件功能的不断提高、系统软件的不断完善,计算机图形学已广泛应用于各个相关领域,并发挥愈来愈大的作用。其中,利用计算机对数字化图形进行编辑处理的方法,也使电脑美术逐渐发展成为一种新兴的艺术形式。 在计算机中,图画有两种类型,即矢量图和位图。位图较矢量图更适合于表现那些色彩丰富、有明暗变化和大量细节的图片,因此在数码拍照、彩色印刷等方面有着广泛的应用。简单地说,计算机绘图学是研究如何利用计算机来处理图形的学科,计算机毕业论文,它涉及到多门学科的知识,例如工程制图学基础、数学基础、程序设计方法学和计算机科学及其它学科的专业知识。这些知识间的相互渗透,会给我们日常生活带来
4、很多方便。关键字:数字化图形编辑处理;矢量图;位图2 d graphics software interactive design HuXingHao (hunan city university computer science 2012 of computer science and technology professionals, hunan yiyang, 413000) Abstract: along with the computer hardware function unceasing enhancement, and the continuous improvement o
5、f the system software, computer graphics has been widely used in various fields, and play more and bigger role. Among them, the use of the digital computer graphics editing processing methods, also make the computer art gradually developed into a new art form. In computers, pictures have two types,
6、namely the vector diagram and the bitmap. The bitmap is vector diagram is more suitable for the color is rich, have performance change and a lot of the detail of the light and shade pictures, so in digital photo taking, color printing, etc in a wide range of applications. Say simply, computer graphi
7、cs to learn how to use a computer is to study to the discipline of the graphics processing, computer graduation thesis, it involves the multi-discipline knowledge, such as engineering cartography foundation, the mathematical foundation, program design methodology and computer science and other disci
8、plines professional knowledge. These knowledge of mutual osmosis, will give us the daily life brings a lot of convenience. Key Words: digital graphics editor processing; Vector diagram; bitmap 前 言:近年来,随着计算机图形软硬件技术的日益进步和应用需求的不断增长,计算机图形学的研究和应用呈现出以下几个特点: (1)模型复杂度急剧增大。随着三维扫描、计算机辅助设计和科学仿真等技术的提高,几何建模变得更加方
9、便,模型的几何复杂度也越来越大,包含上千万甚至数十亿几何图元的模型变得十分普遍。这些模型数据精度高,能保留原始模型的细节特征,对机械制造、生命科学、军事仿真、建筑规划、文物保护、影视游戏等诸多领域具有重要价值。 (2)场景对象更加复杂。随着几何、材质、物理建模技术以及运动捕获技术的提高,虚拟场景中对象类型越来越多,对象属性也变得更加复杂。对象状态可能为静态,也可能由用户控制或程序驱动而动态变化;对象表示可能采用几何表达方式,也可能采用基于图像的表达方式,甚至两者相结合的表达方式;对象属性除了包含几何和材质属性外,也可能包含物理属性,以及交互和智能等高级属性。1 概述1.1 图形学的发展1963
10、年,伊凡苏泽兰(Ivan Sutherland)在麻省理工学院发表了名为画板的博士论文, 它标志着计算机图形学的正式诞生。至今已有三十多年的历史。此前的计算机主要是符号处理系统,自从有了计算机图形学,计算机可以部分地表现人的右脑功能了,所以计算机图形学的建立具有重要的意义。 CAD 的发展也显现出智能化的趋势,就目前流行的大多数CAD 软件来看,主要功能是支持产品的后续阶段一一工程图的绘制和输出,产品设计功能相对薄弱, 利用AutoCAD 最常用的功能还是交互式绘图,如果要想进行产品设计, 最基本的是要其中的AutoLisp语言编写程序,有时还要用其他高级语言协助编写,很不方便。而新一代的智能
11、CAD 系统可以实现从概念设计到结构设计的全过程。例如,德国西门子公司开发的Sigraph Design软件可以实现如下功能:(1) 从一开始就可以用计算机设计草图,不必耗时费力的输入精确的坐标点,能随心所欲的修改,一旦结构确定,给出正确的尺寸即得到满意的图纸;(2) 这个软件中具有关系数据结构, 当你改变图纸的局部,相关部分自动变化,在一个视图上的修改,其他视图自动修改,甚至改变一个零件图,相关的其它零件图以及装配图的相关部分自动修改:(3) 在各个专业领域中,有一些常用件和标准件, 因此,希望有一个参数化图库。而Sigraph不用编程只需画一遍图就能建成自己的图库;(4)Sigraph还可
12、以实现产品设计的动态模拟用于观察设计的装置在实际运行中是否合理等等。智能CAD的另一个领域是工程图纸的自动输入与智能识别,随着CAD技术的迅速推广应用,各个工厂、设计院都需将成千上万张长期积累下来的设计图纸快速而准确输入计算机,作为新产品开发的技术资料。多年来,CAD 中普遍采用的图形输入方法是图形数字化仪交互输入和鼠标加键盘的交互输入方法很难适应工程界大量图纸输入的迫切需要。因此, 基于光电扫描仪的图纸自动输入方法已成为国内外CAD工作者的努力探索的新课题。但由于工程图的智能识别涉及到计算机的硬件、计算机图形学、模式识别及人工智能等高新技术内容,使得研究工作的难点较大。工程图的自动输入与智能
13、识别是两个密不可分的过程,用扫描仪将手绘图纸输入到计算机后,形成的是点阵图象。 CAD 中只能对矢量图形进行编辑, 这就要求将点阵图象转化成矢量图形。而这些工作都让计算机自动完成。这就带来了许多的问题。如(1) 图象的智能识别;(2) 字符的提取与识别;(3) 图形拓扑结构的建立与图形的理解;(4)实用化的后处理方法等等。2 设计原理面向对象的程序设计是现在最外流行的程序设计方法。面向对象的方法模仿人们建立现实世界模型的方法,认为客观世界是由各种各样的对象组成的,每个对象都有各自的内部状态和运动规律,不同对象之间的相互作用和联系就构成了各种各样的系统。利用人们对事物分类和抽象的自然倾向,引进了
14、类的概念,具有封装性、继承性和多态性等特点。面向对象的程序设计吸取了传统的结构化程序设计的优点,采用数据抽象和信息隐藏技术、将数据与操作封装在一起,用类来抽象代表现实的实体,用类之间的继承关系来代表设计的抽象过程,将问题求解看作是一个非类演绎过程。2.1 类与数据封装在C+中,类是指由用户定义的一种抽象数据类型,将一组具有相关性的数据成员结合在一起,要使用类中所包含的数据时,必须通过有该类所提供的成员函数来存取。数据封装是指将类中的数据成员以其可被使用或不可被使用的方式进行分类,即有条件地限制类中部分或全部的数据成员被使用,在定义数据成员时在其前面冠以private、protected或pub
15、lic,分别表示私有的、保护的和公有的。因此,类是实现数据封装的一个有力方法,类的特性是实现了数据封装或数据抽象。在本设计中,可以把各种图形形状,如直线、矩形、圆、曲线、多边形等定义为各种各样的图形类,将图的具体绘制、存储操作和属性设置定义为图形类的public成员函数,这样就实现了类与数据封装。例如,直线类可以定义为:class Clineprivate:COLORREF m_color;/直线的颜色int m_lineWidth, m_lineStyle;/直线的线宽和直线的线型POINT m_beginPoint, m_endPoint;/直线的起点和终点public:COLORREF
16、getColor();/返回直线的颜色void setColor(COLORREF color);/设置直线的颜色int getLineStyle();/返回直线的线型void setLingStyle(UINT style);/设置直线的线型int getLineWidth();/返回直线的线宽void setLineWidth(int width);/设置直线的线宽POINT getBeginPoint();/返回直线的起点POINT getEndPoint();/返回直线的终点void Draw(CDC *pDC);/直线的具体绘制void Serialize(CArchive &ar)
17、;;2.2 派生类与继承性在C+中,派生类和继承性是指用户可以利用已有的类(称为基类或父类)定义出新的类(派生类或子类),派生类中不但拥有基类中的全部或部分数据成员与成员函数,而且还可以定义新的数据成员与成员函数。在本设计中,要绘制的图形形状很多,如直线、矩形、圆、曲线、多边形等。虽然图形的形状差别很大,其数据成员和成员函数也有许多不同之处,但是如果从抽象的角度出发,它们有些数据成员和成员函数是相同的,如颜色、线型、线宽属性以及设置或获取这些属性的成员函数,因此可以把这些共同点定义为一个基类CShape,然后从CShape类派生出直线类、矩形类、圆类、曲线类、多边形类等,这样,每个派生类都继承
18、有这些共同点,又可以定义自己独特的数据成员和成员函数,程序结构更加简练合理。CShape类的定义如下:class CShapeprotected:COLORREF m_color;/颜色int m_lineWidth, m_lineStyle;/线宽和线型public:virtual COLORREF getColor();/返回颜色virtual void setColor(COLORREF color);/设置颜色 virtual int getLineStyle();/返回线型virtual int setLineStyle(int style);/设置线型virtual int get
19、LineWidth();/返回线宽virtual void setLineWidth(int width);/设置线宽virtual void Draw(CDC *pDC);/绘图virtual void Serialize(Carchive &ar);/存储操作;而CLine类派生于CShape类,定义如下:class CLine: public CShapeprivate:POINT m_beginPoint, m_endPoint;/直线的起点和终点public:POINT getBeginPoint();/返回直线的起点POINT getEndPoint();/返回直线的终点void
20、Draw(CDC *pDC);/直线的具体绘制void Serialize(Carchive &ar);/直线的具体存储操作;2.3 虚函数与多态性在面向对象中,多态性是指一个名字有多种含义,或相同界面有多种实现。在继承体系中,如果在派生类中对所继承的成员函数重新定义其功能,该函数应在基类中被定义为虚函数,在成员函数定义时在其前面加上关键字virtual。C+系统能自动判别应该调用哪一个类对象的成员函数。因此,虚函数是一种单界面多实现版本的方法,即函数名、返回类型、参数类型和个数及顺序完全相同,但函数体内容可以完全不同。在本设计中,可以把抽象的图形基类CShape的绘图操作Draw定义为虚函数
21、,直线、矩形、圆、曲线、多边形等作为CShape的派生类,把它们的具体绘图操作定义在各自类中,保留其函数原型(函数名、返回值类型、参数个数及类型、顺序)都不变,然后用指向基类CShape的指针来调用Draw函数,就可以实现虚函数与多态性,即同样的调用语句因指针所指向的对象不同而画出不同的图像。如下所示:CShape *pShape;/定义指向基类CShape的指针pShapeCLine line;/定义一个直线类的对象linepShape=&line;/将line的地址赋给pShapepShape-Draw(pDC);/绘制直线Crectangle rect;/定义一个矩形类的对象rectpS
22、hape=▭/将CRectangle的地址赋给pShapepShape-Draw(pDC);/绘制矩形CCircle circle ;/定义一个圆对象circlepShape=&circle;/将circle的地址赋给pShapepShape-Draw(pDC);/绘制圆可见,同样的语句“pShape-Draw(pDC);”,却能绘制出不同的图形,这就是虚函数与多态性的功能特点。2.4 数据存储与屏幕重绘绘图程序Draw要求能用鼠标在屏幕上绘制直线、贝济埃曲线、圆、椭圆、矩形、多边形等基本二维图形,并提供相应的文件保存和屏幕重绘功能。二维图形包括许多种类型,用于表征这些二维图形对象的
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交互式 二维 图形 绘制 软件设计