网站大量收购独家精品文档,联系QQ:2885784924

交互式图形软件设计资料.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
交互式图形软件设计资料.ppt

第2章 交互式图形软件设计 2.1 交互式图形软件设计方法 2.1.1 Visual C++ 6.0简介 2.1.2 MFC 类库简介 2.1.3 应用程序框架 2.1.4 使用资源编辑器生成图形用户界面 2.1.5 利用消息映射和消息处理实现交互式绘图 2.2 CDC图形程序库 2.2.1 CDC类 2.2.2 绘图工具选择 2.2.3 坐标系统设置与转换 2.2.4 绘图模式与背景设置 2.2.5 图形绘制 2.2.6 区域填充 2.3 面向对象的画图程序设计 2.3.1 类与数据封装 2.3.2 派生类与继承性 2.3.3 虚函数与多态性 2.3.4 数据存储与屏幕重绘 2.3.5 画图程序的设计思路 2.4 图形类的定义 2.4.1 图形基类CShape 1. CShape定义代码 2. CShape类实现代码 2.4.4 矩形类CRectangle 1.CRectangle类定义代码 2.CRectangle类实现代码 2.5 画图程序的实现 2.5.7 简单实用图形学程序设计举例 点用一个坐标点数据表示,直线、圆、椭圆和矩形用二个坐标点数据表示,圆角矩形用二个坐标点数据和二个整型数据来表示,圆弧或椭圆弧、饼形或扇形用四个坐标点数据表示,贝塞尔曲线用四个以上的坐标点数据表示,而多边形所需的坐标点数据个数是任意的。 另外,对于封闭图形,还可以有填充与不填充选择,若填充的话,还可选择颜色、影线和图案三种模式之一。因此,如何实现对这些具有不同数据类型和个数的图形对象的保存,以及如何根据保存的数据区别不同图形对象并进行屏幕重绘,是我们要解决的核心问题。 从文档/视图结构可知,应用程序的数据保存由文档类的Serialize函数负责完成,数据显示由视图类的OnDraw函数负责完成。 如果我们在二维图形基类CShape定义中把负责数据保存的成员函数Serialize和负责图形绘制的成员函数Drawing说明为虚函数,在派生类中改写Serialize和Drawing的函数体内容,用一个指向基类CShape的指针访问虚函数Serialize和Drawing,就可以实现保存和绘制不同数据类型的二维图形对象。 在MFC类库中,集合类是专门用于数据保存的。集合类又分为数组类、链表类和映射类(也称数据字典类)。它们都能适用于各种数据类型,如BYTE、WORD、int、float、String、对象地址或对象指针等。 从前面的分析可以看出,在画图程序中我们需要保存的数据是各二维图形对象的地址,因此可以选用数组类的CObArray/CPtrArray或链表类的CObList/CPtrList。在MFC中,数组是采用动态数组,链表是采用双向链表。数组和链表对存取数据的操作各有优缺点。在画图程序中,我们简单地选用CObArray来存放二维图形对象的地址。 综上所述,可总结出画图程序的设计思路如下: 然后从CShape类派生上述各二维图形类:CLine、CArc、CSpline、CCircle、CEllipse、CRectangle和CPolygon等,在每一个二维图形类中定义自己的几何数据,定义构造函数以便生成各自的图形对象,重载Serialize和Drawing函数,以实现各自不同的数据序列化和屏幕重绘。 首先我们定义一个二维图形的基类CShape,它包含颜色、线型和线宽三个共有的数据成员,定义串行化Serialize和绘图Drawing两个虚函数。 其次,在文档类中定义一个可以保存各二维图形对象地址的CObArray数组,并定义三个操作函数AddDraw、GetDraw、GetDrawNumber。在文档类的Serialize函数中调用CObArray.Serialize函数,实现二维图形对象不同数据类型和个数的序列化。 第三,在用鼠标进行屏幕绘图的鼠标消息处理函数代码中,在OnLButtonUp函数内,对不同的二维图形对象,分别调用各自的构造函数生成二维图形对象,再把该二维图形对象地址用AddDraw函数保存在CObArray数组中,以矩形为例,如下所示: if(pDoc-CurrentDraw==DRAW_RECTANGLE) { pShape=new CRectangle(m_pOrigin,point, pDoc-m_pWidth,pDoc-m_pStyle, pDoc-m_pColor); } … // 其它二维对象的相应语句段 pDoc-AddDraw(pShape); 其中,pDoc为指向文档的指针

文档评论(0)

钱缘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档