用鼠标划线c试验报告

上传人:无*** 文档编号:62468855 上传时间:2022-03-15 格式:DOC 页数:21 大小:471.50KB
收藏 版权申诉 举报 下载
用鼠标划线c试验报告_第1页
第1页 / 共21页
用鼠标划线c试验报告_第2页
第2页 / 共21页
用鼠标划线c试验报告_第3页
第3页 / 共21页
资源描述:

《用鼠标划线c试验报告》由会员分享,可在线阅读,更多相关《用鼠标划线c试验报告(21页珍藏版)》请在装配图网上搜索。

1、青岛理工大学C+面向对象课程设计报告院(系):计算机工程学院专业:计算机科学与技术学生姓名:班级:计算123学号:201207097题目:鼠标绘制曲线起迄日期:2014.6.23 2013.7.5设计地点:计算机学院机房指导教师:刘淑霞完成日期:2014 年7月5日第一章绪论 .11.1课题背景 .11.2国内外研究情况1第二章需求分析.32.1功能需求 .32.2数据需求 .3第三章总体分析 .53.1系统总体结构框图 .5第四章详细设计 .64.1类的关系图.64.3主要功能代码说明.7第五章系统使用说明书.11第六章结论 15第七章参考文献 16第一章绪论1.1课题背景、内容绘图是现代人

2、学习、工作中的不可缺少的一项,人们在工作学习中常常需要绘制一些图形,虽然在一些文档工具中可以实现图形绘制,但往往比较麻烦,并简单的绘图工具可以给且不易学习,一般没学过相关知识的人是不会运用文档工具中的功能去实现简单 图形绘制的,这样人们在工作、学习中往往会陷入困境。不仅简单易学,而且方人们工作带来很大的方便。利用绘图工具实现简单绘图, 便简洁。并且实现存储简单图形本课题主要应用C+编程实现用鼠标能过绘制图形,的功能,在绘图过程中可以应用对话框进行简单的线型、宽度、色彩的换用。1.2国内外研究情况微软公司计算机系统自带的画图工具Adobe Photoshop CS8.01绿色版精简版软件语言:P

3、hotoshop是著名的图象 处理软件,为美国ADOB公司出品。在修饰和处理摄影作品和绘画作品时,具有 非常强大的功能Adobe Illustrator CS v11 Adobe Mu strator是一套被设计用来作输出及网页制作双方面用途、功能强大且完善的绘图软件包,这个专业的绘图程序整 合了功能强大的向量绘图工具、完整的PostScript输出,并和Photoshop或其它Adobe家族的软件紧密地结合。 第10版增加了诸如 Arc、矩型网格线 (Rectangular Grid)以及坐标网格线(Polar Grid) 工具等新的绘图及自动化优点;增加编辑的灵活度以及标志(编辑主要的对象

4、或图像复制)。你可以运用笔刷 及其它如合并、数据驱动坐标等在工具列上的创造工具,帮助你建立联结到数据 库的样版。新的川ustrator 还提供更多的网络生产功能,包括裁切图像并支 持可变动向量绘图档(SVG)增强。Fireworks MX 2004AutoCAD 设计Corel DRAW三维动画软件3D Studio (3DS。它的全称是3 Dimension Studio,译成 中文应该是“三维影像制作室”。3D Studio MA(以下简称MAX是以3DS 4.x为基础的升级版本,它以全新的Windows界面及更强大的功能展示在我们面前。 用MAX来制作三维动画就像是当一个大导演一一一切的

5、角色、道具、灯光、摄像机、场景(包括如云、雾、雪、闪电等特效场面)及配音、镜头的剪辑合成等等 都任你来安排处理。如果你是一位设计家,用MAX来设计产品模型的感觉就像是 雕塑家和魔术师,复杂的模型几乎是在瞬间就奇迹般地建立起来了。而用MAX修改创建的模型更是轻而易举的事,完全可以把宝贵的时间和精力集中用在使设 计更加完美更加理想上。无论是出于何种目的使用MAX, 定会充分体会到用计算机工作时的那种“工作就是玩,玩就是工作”的快感。可以毫不夸张地说,哪里需要三维设计、哪里需要三维动画,哪里就需要 MAX MAX适合于从事下列任何一种职业的专家或业余爱好者:电影特技、立体 和影视动画广告设计、工业设

6、计、建筑和室内装潢设计、包装与装潢设计、三维 游戏开发、软件开发程序员(制作软件片头)、教学多媒体演示制作、军事科学 研究和物理、化学或生物化学研究以及所有对三维动画和立体造型感兴趣的广大 电脑玩家等。MAYA因其强大的功能在3D动画界造成巨大的影响,已经渗入到电影、广播 电视、公司演示、游戏可视化等各个领域,且成为三维动画软件中的佼佼者。星 球大战前传、透明人、黑客帝国、角斗士、完美风暴、恐龙等到很 多大片中的电脑特技镜头都是应用 MAYA成的。逼真的角色动画、丰富的画笔, 接近完美的毛发、衣服效果,不仅是影视广告公司对MAYA青有独钟,许多喜爱三维动画制作,并有志向影视电脑特技方向发展的朋

7、友也为MAYA勺强大功能所吸引。第二章需求分析2.1功能分析本课题主要应用C+编程实现用鼠标能过绘制图形,并且实现存储简单图形的 功能,在绘图过程中可以应用对话框进行简单的线型、宽度、色彩的换用。 2.2数据分析(1)组成曲线的点的数目和组成曲线网络中曲线的数目事先无法确定,利用 集合类来存放,可以动态改变集合的大小;(2)我们需要把曲线网络的信息写到磁盘文件中,或需要从磁盘文件中读取曲线文件,集合类是个很好的选择,因为他们都是派生于CObject类,具有Serialize 的特性;(3)同时集合类又是模板类,所以在使用时需要指定具体的成员类型。在使用CArray类时,指定其成员类型为CPoi

8、nt类。在使用CTypedPtrList类时,指 定其基类为CObList,成员类型为CCurve*,其中CCurve将在下面详细说明。曲线类定义(1)类名称CCurve,头文件Curve.h,实现文件Curve.cpp。(2)基类 CObject,即类 CCurve必须派生自 CObject,使 CCurve具有 Serialize 特征,为此类的声明文件(头文件)中必须有DECLARE_SERIAL,类的执行函数 里必须有 IMPLEMENT_SERIA宏。(3)设置构造函数,首先必须定义一个缺省的构造函数,即无参数的构造函数CCurve(),为什么?因为若一个类来自文件,MFC必须先动态

9、生成它的对象,而且在没有任何参数的情况下调用其构造函数,然后才从文档中读出对象信息。 另外,根据需要,可以添加其他形式的构造函数。在这里,除了缺省的构造函数 外,也添加了 一个新的构造函数,其形式为CCurve(int nStyle,int nWidth,COLORREFrColor),其中第一个参数为曲线的线型,曲线的线型主要有 实线、短划线、点线、点划线和点点划线等,第二个参数为曲线的宽度,第三个 参数为曲线的颜色,即通过这个构造函数设置曲线的线型、宽度和颜色。(4 )曲线文件的保存和打开。在这里需要把一条曲改写文档类的虚拟函数Serialize ,线的信息写入文件中或从文件中读取一个曲线

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

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

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

13、nts。在打开新的文档,创建新的文档和程序 结束时都要调用该函数,删除文档的内容,以释放已被占用的内存。第17页第三章总体设计开始用鼠标画线改变线型、宽度、 颜色,用鼠标画线应用对话框修改选择 数据后,用鼠标画线保存图形,打开存储 文件结束4.1第四章详细设计4.2/鼠标左键摁下void CDrawLi neView:O nLButto nDow n( UINT nFlags, CPoi nt poi nt)n _pstroke= (GetDocume nt()-NewCurve();n _pstroke-n_poi ntArray.Add(poi nt);/保存左键摁下后的点n _atOri

14、g in=point;n _cha nge=TRUE;CView:O nLButt on Dow n(nF lags, poi nt);/左键摁下后鼠标移动void CDrawLi neView: :OnM ouseMove(UINT nFlags, CPoi nt poi nt)/ TODO: Add your message han dler code here an d/or call defaultCClie ntDC dc(this);CPe n pen( PS_SOLID,1,RGB(O,O,O);/PS_DASH PS_DOTCPe n *poldpe n=dc.SelectOb

15、ject(&pe n); /选择当前画笔if(n_cha nge=TRUE)/判断左键是否摁下 dc.MoveTo(n_atOrigi n);dc.Li neTo(poi nt);n _atOrigi n=po int;n _pstroke-n_poi ntArray.Add(poi nt); /保存鼠标移动过程中的点dc.SelectObject(poldpe n);CView:O nMouseMove( nFlags, poi nt);/左键松开void CDrawLi neView:O nLButto nUp(UINT nFlags, CPoi nt poi nt)n _cha nge=

16、FALSE;n _pstroke-n _poi ntArray.Add(poi nt);保存终止点CView:O nLButto nUp( nFlags, poi nt);这三部实现啦画线class CCurve : public CObjectpublic:CCurve();virtual CCurve();public:CArrayvCPoi nt,CPoi nt n_poi ntArray;/记录数组里的点void DrawStroke(CDC*pDC);public:virtual void Serialize(CArchive & ar);DECLARE_SERIAL(CCurve)

17、;void CDrawLi neView: On Draw(CDC* pDC)CDrawLi neDoc* pDoc = GetDocume nt();ASSERT_VALID(pDoc);POSITION pos = pDoc-n_strokeList.GetHeadPositio n(); while (pos !=NULL)CCurve *pStroke = pDoc-n_strokeList.GetNext(pos); pStroke-DrawStroke(pDC);n _pstroke-DrawStroke(pDC);CCurve* CDrawL in eDoc:NewCurve()

18、CCurve *pStroke = new CCurve;n _strokeList.AddTail(pStroke);SetModifiedFlag();return pStroke;线条设置代码void CCurveView:O nSet in g()/设置画笔的属性Seti ng dlg;dlg.m_ nLin eWidth=m_ nLin eWidth;dlg.m _nLin eStyle=m _n Li neStyle;dlg.m_color=m_clr;if(IDOK=dlg.DoModal()m_nLin eWidth=dlg.m_ nLin eWidth; m_n Li neS

19、tyle=dlg.m _n Li neStyle; m_clr=dlg.m_color;第五章系统使用说明书运行程序后摁住左键画线甘旧攣徵舟圭習的m2 R1晶更尉通过修改数据让线条变成红色,宽度变为10线条为点线存储线条Untitled.drl - DrawLine文悴忻輛旧奁若M (eatf(H)设岂CZI打开文件打开后第六章 结论通过这次课程设计,让我第一次认识啦C+的语言的强大简洁,第一次接触mfc,对制作一个画图软件感觉无从下手,看啦很多的视频教程后,还是觉得对 MFC不了解,他把每部分分开,有时候找个变量都觉得很困难,在询问拉同学和 通过网络搜索后,通过一步步的修改,最终还是把程序做

20、出来啦,程序还有很多 弊端。最初,做出来的程序只能画出一条线,无论你画多少条,再最小化以后都 是一条,最后通过百度后终于知道自己定义变量不对,然后就是线段无法保存, 当保存完后打开总是空的,原来在保存程序中忘记加保存点,颜色值为红、绿、 蓝三色的混合,最小值为0,即黑色,RGB(O,O,O),最大值为 16777215,RGB(255,255,255),即白色,可以通过颜色对话框选择。最后就是对话框,我搜 索啦好久也没找到一个教程,找同学帮忙后总算做出来啦,但是还是不能打开。 只能通过在程序里改cpen来修改啦。还有就是点线和虚线在保存时都会变为实 线。还有一个小问题是点线和虚线只能用线宽1时才能画出。这个程序还是能够实现画图和保存图的功能的。这次课程设计让我学到啦很多,也对MFC有啦初步的认识,在以后的学习中 我一定能把上面的问题一个一个解决的。第七章参考文献【1】李兰C+面向对象课程设计 西安电子科技大学出版社20102010【2】李兰C+面向对象课程设计 实验指导西安电子科技大学出版社【4】孙鑫MFC视频教学 搜狐视频

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!