ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:629.52KB ,
资源ID:7991586      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7991586.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(用鼠标划线c实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

用鼠标划线c实验报告.docx

1、用鼠标划线c 实验报告 青岛理工大学C+面向对象课程设计报告院(系): 计算机工程学院 专业: _计算机科学与技术 学生姓名: 班级:计算123 学号: 201207097 题目: 鼠标绘制曲线 _ 起迄日期: _2014.6.232013.7.5 设计地点: _计算机学院机房 指 导 教 师: _刘淑霞 完成日期: 2014 年7月 5 日 目 录第一章 绪论.11.1课题背景.11.2国内外研究情况.1第二章 需求分析.3 2.1 功能需求.3 2.2 数据需求.3第三章 总体分析.5 3.1 系统总体结构框图.5第四章 详细设计.6 4.1 类的关系图.6 4.3 主要功能代码说明.7第

2、五章 系统使用说明书.11第六章 结论15第七章 参考文献16 第一章 绪论1.1课题背景、内容 绘图是现代人学习、工作中的不可缺少的一项,人们在工作学习中常常需要绘制一些图形,虽然在一些文档工具中可以实现图形绘制,但往往比较麻烦,并且不易学习,一般没学过相关知识的人是不会运用文档工具中的功能去实现简单图形绘制的,这样人们在工作、学习中往往会陷入困境。简单的绘图工具可以给人们工作带来很大的方便。利用绘图工具实现简单绘图,不仅简单易学,而且方便简洁。 本课题主要应用c+编程实现用鼠标能过绘制图形,并且实现存储简单图形的功能,在绘图过程中可以应用对话框进行简单的线型、宽度、色彩的换用。1.2国内外

3、研究情况 微软公司计算机系统自带的画图工具 Adobe Photoshop CS8.01绿色版精简版软件语言:Photoshop是著名的图象处理软件, 为美国ADOBE公司出品。在修饰和处理摄影作品和绘画作品时,具有非常强大的功能 Adobe Illustrator CS v11 Adobe Illustrator是一套被设计用来作输出及网页制作双方面用途、功能强大且完善的绘图软件包,这个专业的绘图程序整合了功能强大的向量绘图工具、完整的PostScript输出,并和Photoshop或其它Adobe家族的软件紧密地结合。 第10版增加了诸如Arc、矩型网格线(Rectangular Grid

4、)以及坐标网格线(Polar Grid)工具等新的绘图及自动化优点;增加编辑的灵活度以及标志(编辑主要的对象或图像复制)。你可以运用笔刷及其它如合并、数据驱动坐标等在工具列上的创造工具,帮助你建立联结到数据库的样版。 新的Illustrator还提供更多的网络生产功能,包括裁切图像并支持可变动向量绘图档(SVG)增强。 Fireworks MX 2004 AutoCAD 设计 Corel DRAW 三维动画软件 3D Studio(3DS)。它的全称是 3Dimension Studio,译成中文应该是“三维影像制作室”。 3D Studio MAX(以下简称 MAX)是以 3DS 4.x为基

5、础的升级版本,它以全新的 Windows界面及更强大的功能展示在我们面前。用MAX来制作三维动画就像是当一个大导演一切的角色、道具、灯光、摄像机、场景(包括如云、雾、雪、闪电等特效场面)及配音、镜头的剪辑合成等等都任你来安排处理。如果你是一位设计家,用MAX来设计产品模型的感觉就像是雕塑家和魔术师,复杂的模型几乎是在瞬间就奇迹般地建立起来了。而用MAX修改创建的模型更是轻而易举的事,完全可以把宝贵的时间和精力集中用在使设计更加完美更加理想上。无论是出于何种目的使用 MAX,一定会充分体会到用计算机工作时的那种“工作就是玩,玩就是工作”的快感。 可以毫不夸张地说,哪里需要三维设计、哪里需要三维动

6、画,哪里就需要MAX。MAX适合于从事下列任何一种职业的专家或业余爱好者:电影特技、立体和影视动画广告设计、工业设计、建筑和室内装潢设计、包装与装潢设计、三维游戏开发、软件开发程序员(制作软件片头)、教学多媒体演示制作、军事科学研究和物理、化学或生物化学研究以及所有对三维动画和立体造型感兴趣的广大电脑玩家等。 MAYA因其强大的功能在3D动画界造成巨大的影响,已经渗入到电影、广播电视、公司演示、游戏可视化等各个领域,且成为三维动画软件中的佼佼者。星球大战前传、透明人、黑客帝国、角斗士、完美风暴、恐龙等到很多大片中的电脑特技镜头都是应用MAYA完成的。逼真的角色动画、丰富的画笔,接近完美的毛发、

7、衣服效果,不仅是影视广告公司对MAYA情有独钟,许多喜爱三维动画制作,并有志向影视电脑特技方向发展的朋友也为MAYA的强大功能所吸引。 第二章 需求分析2.1功能分析 本课题主要应用c+编程实现用鼠标能过绘制图形,并且实现存储简单图形的功能,在绘图过程中可以应用对话框进行简单的线型、宽度、色彩的换用。2.2数据分析 (1)组成曲线的点的数目和组成曲线网络中曲线的数目事先无法确定,利用集合类来存放,可以动态改变集合的大小; (2)我们需要把曲线网络的信息写到磁盘文件中,或需要从磁盘文件中读取曲线文件,集合类是个很好的选择,因为他们都是派生于CObject类,具有Serialize的特性; (3)

8、同时集合类又是模板类,所以在使用时需要指定具体的成员类型。在使用CArray类时,指定其成员类型为CPoint类。在使用CTypedPtrList类时,指定其基类为CObList,成员类型为CCurve*,其中CCurve将在下面详细说明。 曲线类定义(1)类名称CCurve,头文件Curve.h,实现文件Curve.cpp。 (2)基类CObject,即类CCurve必须派生自CObject,使CCurve具有Serialize特征,为此类的声明文件(头文件)中必须有DECLARE_SERIAL宏,类的执行函数里必须有IMPLEMENT_SERIAL 宏。 (3)设置构造函数,首先必须定义一

9、个缺省的构造函数,即无参数的构造函数CCurve(),为什么?因为若一个类来自文件,MFC必须先动态生成它的对象,而且在没有任何参数的情况下调用其构造函数,然后才从文档中读出对象信息。另外,根据需要,可以添加其他形式的构造函数。在这里,除了缺省的构造函数外,也添加了一个新的构造函数,其形式为CCurve(int nStyle,int nWidth,COLORREF crColor),其中第一个参数为曲线的线型,曲线的线型主要有实线、短划线、点线、点划线和点点划线等,第二个参数为曲线的宽度,第三个参数为曲线的颜色,即通过这个构造函数设置曲线的线型、宽度和颜色。 (4)曲线文件的保存和打开。在这里

10、需要把一条曲改写文档类的虚拟函数Serialize,线的信息写入文件中或从文件中读取一个曲线的信息并显示。写入或读取的曲线信息主要有线型、宽度、颜色和节点序列,这四种信息的写入和读取的顺序要相同。由于节点序列是存放在CArrray类型的数组中,而该类型的数组本身具有序列化的特点,所以在写入或读取节点序列时,再调用CArrray的Serialize函数,完成一次性的写入或读取节点序列。 (5)曲线的绘制。曲线的绘制分三步进行,第一步,根据曲线属性定义画笔,画笔的属性主要有:线型、宽度和颜色,这些属性都可以通过对话框由用户选择;第二步把定义好的画笔选入设备环境中;第三步即可用定义好的画笔在具体的设

11、备环境中画线。 (6)添加新的节点函数AddNewPoint。鼠标每移动一下,都要调用该函数,把当前鼠标位置坐标添加到曲线类CCurve的节点序列中。 文档类 (1)曲线网络的定义m_curveList,采用模板链表类CTypedPtrList,该类的基类为CObList,即链表中的成员为CObject类对象,类型为CCurve*,为指向CCurve类的指针。 (2)曲线文件的读写Serialize,分三步进行:第一步,由于CTypedPtrList派生自CObject,所以该类对象也具有序列化的特征,所以曲线文件的读写即完成该类对象的序列化操作就行了,即在文档类的Serialize函数直接调

12、用CTypedPtrList类的Serialize函数;第二步,由于CTypedPtrList类的成员是CCurve类,所以需要继续调用CCurve类的Serialize函数,来完成各条曲线的序列化操作,即依次完成每条曲线的属性(包括线型、宽度和颜色)和节点序列的写入或读取;第三步,由于每条曲线的节点序列存放在CArray数组中,于是接着调用CArray类的Serialize函数完成节点序列的序列化操作。 (3)创建一条新的曲线函数NewCurve。该函数实现创建一条新的曲线,并添加到曲线网络中,在这里利用new运算符创建一个CCurve类对象,即调用该类的带参数的构造函数,对象创建完毕,添加

13、到曲线网络链表中。 (4)删除文档函数DeleteContents。在打开新的文档,创建新的文档和程序结束时都要调用该函数,删除文档的内容,以释放已被占用的内存。 第三章 总体设计 第四章 详细设计4.14.2/鼠标左键摁下void CDrawLineView:OnLButtonDown(UINT nFlags, CPoint point) n_pstroke= (GetDocument()-NewCurve(); n_pstroke-n_pointArray.Add(point); /保存左键摁下后的点 n_atOrigin=point; n_change=TRUE; CView:OnLBu

14、ttonDown(nFlags, point);/左键摁下后鼠标移动void CDrawLineView:OnMouseMove(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CClientDC dc(this); CPen pen(PS_SOLID,1,RGB(0,0,0);/PS_DASH PS_DOT CPen *poldpen=dc.SelectObject(&pen); /选择当前画笔 if(n_change=TRUE) /判断左键是否摁下 dc.Mo

15、veTo(n_atOrigin); dc.LineTo(point); n_atOrigin=point; n_pstroke-n_pointArray.Add(point); /保存鼠标移动过程中的点 dc.SelectObject(poldpen); CView:OnMouseMove(nFlags, point);/左键松开void CDrawLineView:OnLButtonUp(UINT nFlags, CPoint point) n_change=FALSE; n_pstroke-n_pointArray.Add(point);/保存终止点 CView:OnLButtonUp(n

16、Flags, point);这三部实现啦画线class CCurve : public CObject public: CCurve(); virtual CCurve();public: CArray n_pointArray;/记录数组里的点 void DrawStroke(CDC*pDC);public: virtual void Serialize(CArchive& ar); DECLARE_SERIAL(CCurve);void CDrawLineView:OnDraw(CDC* pDC) CDrawLineDoc* pDoc = GetDocument(); ASSERT_VAL

17、ID(pDoc); POSITION pos = pDoc-n_strokeList.GetHeadPosition(); while (pos !=NULL) CCurve *pStroke = pDoc-n_strokeList.GetNext(pos); pStroke-DrawStroke(pDC); n_pstroke-DrawStroke(pDC); CCurve* CDrawLineDoc:NewCurve() CCurve *pStroke = new CCurve; n_strokeList.AddTail(pStroke); SetModifiedFlag(); retur

18、n pStroke;线条设置代码void CCurveView:OnSeting() /设置画笔的属性 Seting dlg; dlg.m_nLineWidth=m_nLineWidth; dlg.m_nLineStyle=m_nLineStyle;dlg.m_color=m_clr; if(IDOK=dlg.DoModal() m_nLineWidth=dlg.m_nLineWidth; m_nLineStyle=dlg.m_nLineStyle; m_clr=dlg.m_color; 第五章 系统使用说明书运行程序后摁住左键画线 通过修改数据让线条变成红色,宽度变为10线条为点线存储线条打

19、开文件打开后 第六章 结论 通过这次课程设计,让我第一次认识啦c+的语言的强大简洁,第一次接触mfc,对制作一个画图软件感觉无从下手,看啦很多的视频教程后,还是觉得对MFC不了解,他把每部分分开,有时候找个变量都觉得很困难,在询问拉同学和通过网络搜索后,通过一步步的修改,最终还是把程序做出来啦,程序还有很多弊端。 最初,做出来的程序只能画出一条线,无论你画多少条,再最小化以后都是一条,最后通过XX后终于知道自己定义变量不对,然后就是线段无法保存,当保存完后打开总是空的,原来在保存程序中忘记加保存点,颜色值为红、绿、蓝三色的混合,最小值为0,即黑色,RGB(0,0,0),最大值为16777215

20、,RGB(255,255,255),即白色,可以通过颜色对话框选择。最后就是对话框,我搜索啦好久也没找到一个教程,找同学帮忙后总算做出来啦,但是还是不能打开。只能通过在程序里改cpen来修改啦。还有就是点线和虚线在保存时都会变为实线。还有一个小问题是点线和虚线只能用线宽1时才能画出。这个程序还是能够实现画图和保存图的功能的。这次课程设计让我学到啦很多,也对MFC有啦初步的认识,在以后的学习中我一定能把上面的问题一个一个解决的。 第七章 参考文献【1】李兰 C+面向对象课程设计 西安电子科技大学出版社 2010【2】李兰 C+面向对象课程设计 实验指导 西安电子科技大学出版社 2010【4】孙鑫 MFC视频教学 搜狐视频

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1