华中科技大学C实验总结报告(图形编辑器).docVIP

华中科技大学C实验总结报告(图形编辑器).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华中科技大学C实验总结报告(图形编辑器)

C++ 实验总结报告 研究课题:图形编辑器 学 校:华中科技大学 院 系: 班 级: 姓 名: 指导老师: 实验目的 熟悉C++的一些重要性质,利用封装、继承、虚函数和多态性等特性,通过实验学习如何对各类图元的属性和方法进行合理的封装 学习Microsoft的Visual C++编程工具 掌握MFC的相关知识 掌握基本的文件保存、读取以及操作封装技术 实验目的 设计一个简单的图形编辑器 实验所用仪器、设备 计算机:PentiumIII 800 以上 256M内存 操作系统:Windows 2000/XP 开发集成环境:Visual C++ 6.0 软件功能简介 (注:此软件是从网上下载得来) 该软件具有汉化的菜单界面(仿Windows自带画图软件),具有文件打开、编辑、保存等功能。编辑部分包括可以在编辑区域画直线、圆、矩形、曲线等矢量图形,可插入文字,可以修改线条的线型、颜色等基本属性。 部分代码分析 1.直线类代码: class CCreateLine : public CCommand { private: Position m_begin; // 直线的起点 Position m_end;// 直线的终点 public: CCreateLine() ; ~CCreateLine() ; int GetType(); int OnLButtonDown(UINT nFlags, const Position pos) ; int OnMouseMove(UINT nFlags, const Position pos) ; int OnRButtonDown(UINT nFlags, const Position pos) ; int Cancel() ; } ; 学习C++我们最需要理解的就是它面向对象的设计思想。这种思想可以在类和对象上得到充分的体现。 类是面向对象程序设计的核心,它实际上是由用户定义的一种新的复杂数据类型。它是通过抽象数据类型ADT方法来实现的一种数据类型,将不同类型的数据和与这些数据相关的操作封装在一起形成一个集合体。因此,它具有更高的抽象性,实现了信息的隐藏和封装。 对象是某种类的一个实例,是类的具体体现。一个类可以有多个对象。 分析这一段代码,编程者将直线的起始点和终止点设置为私有成员,这样做就对整条直线实现了隐藏和保护,是面向对象中封装特性的一个具体体现;另外,此函数中还包含了构造函数与析构函数,构造函数完成对新对象的初始化工作,析构函数是构造函数的配对物,它实现与构造函数相反的功能。另外的几个成员函数名称形参返回值都与class Ccommand 中的几个公有函数相同,而在class Ccommand中,这几个函数都是虚函数,这是函数重载,也是多态性的具体体现。 由这段代码我们可以了解关于类和对象的一些知识,为我们进一步了解面向对象程序设计的思想精髓奠定了基础。 2.对构造函数和解析函数的分析 构造函数 CCreateLine::CCreateLine() : m_begin(0,0), m_end(0,0) { m_nStep = 0; // 初始化操作步为 0 } 此构造函数用初始化列表的方式对直线类的私有成员进行初始化,同时记下操作步m_nStep是直线类从指令类中继承来的成员,它在指令类中属于保护成员,在直线类中则成为私有成员。这是数据共享与数据保护两者兼顾时的一种处理方法。 析构函数 CCreateLine::~CCreateLine() { } 此析构函数中没有任何操作语句,但它并非没有任何操作。在任何一个对象消失时都要调用本类的析构函数进行扫尾工作。在构造对象时,构造函数分配资源给程序,在对象作用结束后,这些资源的释放就要靠析构函数。当然析构函数中也是可以有语句的,当需要在对象消失之前执行某种操作时,可以把语句写在里边。 3. BOOL Cline::Pick(const Positionpos,const double pick_radius) { Position objPos=pos; BOX2D sourceBox,desBOX; GetBox(sourceBox); desBox.min[0]=sourceBox.min[0]-pick_radius; desBox.min[1]=sourceBox.min[1]-pick_radius; desBox.max[0]=sourceBox.max[0]+pick_radius; desBox.max[1]=sourceBox.min[1]+

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档