昆明理工大学计算机绘图大作业.doc_第1页
昆明理工大学计算机绘图大作业.doc_第2页
昆明理工大学计算机绘图大作业.doc_第3页
昆明理工大学计算机绘图大作业.doc_第4页
昆明理工大学计算机绘图大作业.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

昆明理工大学信息工程与自动化学院学生课程设计( 2010 - 2011 学年 第 二 学期 )课程名称:计算机绘图 课程代码:年级、专业学号姓名成绩课程设计名称 温馨的和谐家园任课教师刘利军教师评语 教师签名: 年 月 日一、 课程设计目标通过学习,掌握基本的计算机图形系统的组成原理、用途与实现方法;掌握计算机绘图的基本原理、方法与技术,掌握计算机二维图形的变换方法,了解动画图形的分类、原理及绘制方法。了解图形软件开发过程中图形元素的实现过程。熟悉VC+可视化开发工具的使用方法,掌握VC+ APP Wizard的使用方法与常用的绘图函数,掌握VC+的图像处理功能的一般方法与步骤,并能编程实现图像的绘制。结合自己所学的知识,通过常用的绘图函数,以及常用的语句完成一幅比较好看、温馨的地球场景。另外在做题的过程中,再次学习和巩固所学到的知识,加深印象。二、 设计要求采用本课程讲授的内容,实现一个基于VC+ MFC的简单图形绘制软件,要求设计的内容至少覆盖本课程讲授内容的三分之二以上。具体包含如下内容:1. 使用VC+可视化开发工具的VC+ APP Wizard功能,建立基于单文档的应用程序。2. 使用常用的绘图函数绘制图形3. 面向对象的绘图方法与步骤4. 能够增加图形处理应用的菜单及消息处理程序5. 能够增加图形处理应用的鼠标及消息处理程序6. 能够设置不同的绘图方式绘制图形7. 能够采用像皮筋技术绘图8. 能够绘制简单的动画图形三、 设计思路 本次的程序,主要做的事就是完成一幅美丽温馨的地球场景。在做的过程中,大量引用了画刷,其次还有矩形、圆角矩形、多边形、三角形、画笔、椭圆、直线等的画法。首先,在图的正中间画一条路,在路的左上边画一个小房子,在天空中画一架飞机,在路的右下边画一个简单的湖泊,在路的两边进行绿化,在路上画一个小汽车。四、 主要内容本课程设计主要用的内容有:主要用到了菜单,橡皮筋法画圆,另外还用到了画刷,其次还有矩形、圆角矩形、多边形、三角形、画笔、椭圆、直线等的画法。用到的函数很多,比如:1. 定义型的函数:void CJiangxiongView:OnDraw(CDC* pDC)、BOOL CJiangxiongView:OnPreparePrinting(CPrintInfo* pInfo)、void CJiangxiongView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)、void CJiangxiongView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)、void CJiangxiongView:AssertValid() const、void CJiangxiongView:Dump(CDumpContext& dc) const、CJiangxiongDoc* CJiangxiongView:GetDocument() / non-debug version is inline、void CJiangxiongView:OnMenuitem32771() 、void CJiangxiongView:OnMenuitem32772() 、void CJiangxiongView:OnMenuitem32773() 、void CJiangxiongView:OnMenuitem32775() 、void CJiangxiongView:OnMenuitem32774()、void CJiangxiongView:OnMenuitem32776() 、void CJiangxiongView:DrawCircle(CDC *pDC, CPoint cenp, CPoint ardp)、void CJiangxiongView:OnLButtonDown(UINT nFlags, CPoint point) 、void CJiangxiongView:OnMouseMove(UINT nFlags, CPoint point) 。2. 绘图基本函数: 直线: pDC-MoveTo( , );pDC-LineTo( , );矩形:pDC-Rectangle( , , , );圆角矩形:pDC-RoundRect( , , , , , ); 圆或者椭圆:pDC-Ellipse( , , , );文本输出:pDC-TextOut( , , );绘制多边形:POINT polygonPts11= , , , , , , , , , , , , , , , , , , , , , ;pDC-Polygon(polygonPts,11);五、 程序实现1. 绘制公路: 程序代码:void CJiangxiongView:OnMenuitem32771() CDC * pDC=GetDC();/先画一条公路CBrush *pNewBrush0;CBrush *pOldBrush0;pNewBrush0=new CBrush;if (pNewBrush0-CreateSolidBrush(RGB(10,10,10) /选择新画刷 pOldBrush0=pDC-SelectObject(pNewBrush0); /绘制矩形 pDC-Rectangle(0,300,2000,450); /恢复原有画刷 pDC-SelectObject(pOldBrush0); int i=0;for(i=0;iRectangle(0+(100*i),372,50+(100*i),378);pDC-TextOut(350,350,公路); 2. 绘制小房子: 程序代码:void CJiangxiongView:OnMenuitem32772() CDC * pDC=GetDC();/再画小房子 /画窗户CBrush *pNewBrush2;CBrush *pOldBrush2;pNewBrush2=new CBrush;if (pNewBrush2-CreateSolidBrush(RGB(200,100,60) /选择新画刷 pOldBrush2=pDC-SelectObject(pNewBrush2); /画房体pDC-Rectangle(90,150,320,280);/画烟囱pDC-Rectangle(260,70,280,100); /恢复原有画刷 pDC-SelectObject(pOldBrush2); CBrush *pNewBrush3;CBrush *pOldBrush3;pNewBrush3=new CBrush;if (pNewBrush3-CreateSolidBrush(RGB(150,200,250) /选择新画刷pOldBrush3=pDC-SelectObject(pNewBrush3);pDC-Rectangle(95,160,135,200);pDC-Rectangle(140,160,180,200);pDC-Rectangle(185,160,225,200);pDC-Rectangle(230,160,270,200);pDC-Rectangle(275,160,315,200);pDC-Rectangle(95,220,140,270);pDC-Rectangle(270,220,315,270);/恢复原有画刷 pDC-SelectObject(pOldBrush3); /画门框pDC-Rectangle(160,210,250,280);/画红色的大门CBrush *pNewBrush4;CBrush *pOldBrush4;pNewBrush4=new CBrush;if (pNewBrush4-CreateSolidBrush(RGB(255,0,0) /选择新画刷 pOldBrush4=pDC-SelectObject(pNewBrush4);/画房顶CPen redPen(PS_SOLID,1,RGB(200,50,0);/将新画笔选入设备环境CPen *oOldPen = pDC-SelectObject(&redPen);POINT polygonPts4=120,100,70,150,340,150,290,100;pDC-Polygon(polygonPts,4);/将原画笔选入设备环境pDC-SelectObject(oOldPen); pDC-Rectangle(165,215,205,275);pDC-Rectangle(205,215,245,275); /恢复原有画刷 pDC-SelectObject(pOldBrush4); pDC-TextOut(180,120,小房子); 3.画飞机 程序代码:void CJiangxiongView:OnMenuitem32773() CDC * pDC=GetDC();/再画一个飞机CBrush *pNewBrush1;CBrush *pOldBrush1;pNewBrush1=new CBrush;if (pNewBrush1-CreateSolidBrush(RGB(150,200,250) /选择新画刷 pOldBrush1=pDC-SelectObject(pNewBrush1); /绘制矩形 pDC-Rectangle(700,100,900,150); /绘制三角形 POINT polygonPts3=660,125,700,100,700,150;pDC-Polygon(polygonPts,3); POINT polygonPts3=750,100,875,50,825,100; pDC-Polygon(polygonPts,3); POINT polygonPts3=750,150,875,200,825,150; pDC-Polygon(polygonPts,3); /绘制多边形POINT polygonPts7=900,100,1000,75,925,116,1025,125,925,134,1000,175,900,149; pDC-Polygon(polygonPts,7);/恢复原有画刷 pDC-SelectObject(pOldBrush1); pDC-TextOut(790,120,飞机); 4.画草原及亭子: 程序代码:void CJiangxiongView:OnMenuitem32775() CDC * pDC=GetDC();/绿化/画亭子支架及树干CPen *pNewPen;CPen *pOldPen;/构造新笔 pNewPen=new CPen; if(pNewPen-CreatePen(PS_SOLID,6,RGB(0,0,0) pOldPen=pDC-SelectObject(pNewPen);pDC-Rectangle(380,180,460,240); pDC-Rectangle(1080,180,1160,240);pDC-Rectangle(580,220,586,240);pDC-Rectangle(650,220,656,240); /恢复原有的笔 pDC-SelectObject(pOldPen); CBrush *pNewBrush5;CBrush *pOldBrush5;pNewBrush5=new CBrush;if (pNewBrush5-CreateSolidBrush(RGB(0,255,0) /选择新画刷 pOldBrush5=pDC-SelectObject(pNewBrush5); /画两块草坪 POINT polygonPts4=380,240,320,295,1100,295,1160,240;pDC-Polygon(polygonPts,4); POINT polygonPts4=100,455,0,600,920,600,1020,455;pDC-Polygon(polygonPts,4); /画亭盖POINT polygonPts3=360,180,480,180,420,120;pDC-Polygon(polygonPts,3);POINT polygonPts3=1060,180,1180,180,1120,120;pDC-Polygon(polygonPts,3);/画树叶POINT polygonPts11=583,160,568,180,578,180,563,200,573,200,553,220,613,220,593,200,603,200,588,180,598,180;pDC-Polygon(polygonPts,11);POINT polygonPts11=653,160,638,180,648,180,633,200,643,200,623,220,683,220,663,200,673,200,658,180,668,180;pDC-Polygon(polygonPts,11);/恢复原有画刷 pDC-SelectObject(pOldBrush5); pDC-TextOut(265,500,草坪);pDC-TextOut(450,265,草坪);5.画湖泊: 程序代码:void CJiangxiongView:OnMenuitem32774() CDC * pDC=GetDC();/画一个湖泊CBrush *pNewBrush6;CBrush *pOldBrush6;pNewBrush6=new CBrush;if (pNewBrush6-CreateSolidBrush(RGB(150,200,250) /选择新画刷 pOldBrush6=pDC-SelectObject(pNewBrush6); /绘制湖泊 pDC-Ellipse(1000,460,1320,600);/恢复原有画刷 pDC-SelectObject(pOldBrush6); pDC-TextOut(1150,540,湖泊);6.画汽车: 程序代码:void CJiangxiongView:OnMenuitem32776() CDC * pDC=GetDC();/画汽车CBrush *pNewBrush6;CBrush *pOldBrush6;pNewBrush6=new CBrush;if (pNewBrush6-CreateSolidBrush(RGB(255,0,0) /选择新画刷 pOldBrush6=pDC-SelectObject(pNewBrush6);/绘制椭圆pDC-Ellipse(500,270,600,320); /绘制矩形 pDC-Rectangle(470,290,630,335); /恢复原有画刷 pDC-SelectObject(pOldBrush6); pDC-RoundRect(470,320,480,330,10,20);CPen *pNewPen;CPen *pOldPen;/构造新笔 pNewPen=new CPen; if(pNewPen-CreatePen(PS_SOLID,6,RGB(0,0,0) pOldPen=pDC-SelectObject(pNewPen); /画轮

温馨提示

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

评论

0/150

提交评论