首页 昆明理工大学计算机绘图大作业

昆明理工大学计算机绘图大作业

举报
开通vip

昆明理工大学计算机绘图大作业昆明理工大学信息工程与自动化学院学生课程设计(2010--2011学年第二学期)课程名称:计算机绘图 课程代码:年级、专业学号姓名成绩课程设计名称温馨的和谐家园任课教师刘利军教师评语教师签名:年月日一、 课程设计目标通过学习,掌握基本的计算机图形系统的组成原理、用途与实现方法;掌握计算机绘图的基本原理、方法与技术,掌握计算机二维图形的变换方法,了解动画图形的分类、原理及绘制方法。了解图形软件开发过程中图形元素的实现过程。熟悉VC++可视化开发工具的使用方法,掌握VC++APPWizard的使用方法与常用...

昆明理工大学计算机绘图大作业
昆明理工大学信息工程与自动化学院学生课程设计(2010--2011学年第二学期)课程名称:计算机绘图 课程代码: 年级 六年级体育公开课教案九年级家长会课件PPT下载六年级家长会PPT课件一年级上册汉语拼音练习题六年级上册道德与法治课件 、专业学号姓名成绩课程设计名称温馨的和谐家园任课教师刘利军教师评语教师签名:年月日一、 课程设计目标通过学习,掌握基本的计算机图形系统的组成原理、用途与实现方法;掌握计算机绘图的基本原理、方法与技术,掌握计算机二维图形的变换方法,了解动画图形的分类、原理及绘制方法。了解图形软件开发过程中图形元素的实现过程。熟悉VC++可视化开发工具的使用方法,掌握VC++APPWizard的使用方法与常用的绘图函数,掌握VC++的图像处理功能的一般方法与步骤,并能编程实现图像的绘制。结合自己所学的知识,通过常用的绘图函数,以及常用的语句完成一幅比较好看、温馨的地球场景。另外在做题的过程中,再次学习和巩固所学到的知识,加深印象。二、 设计要求采用本课程讲授的内容,实现一个基于VC++MFC的简单图形绘制软件,要求设计的内容至少覆盖本课程讲授内容的三分之二以上。具体包含如下内容:1. 使用VC++可视化开发工具的VC++APPWizard功能,建立基于单文档的应用程序。2. 使用常用的绘图函数绘制图形3. 面向对象的绘图方法与步骤4. 能够增加图形处理应用的菜单及消息处理程序5. 能够增加图形处理应用的鼠标及消息处理程序6. 能够设置不同的绘图方式绘制图形7. 能够采用像皮筋技术绘图8. 能够绘制简单的动画图形三、 设计思路本次的程序,主要做的事就是完成一幅美丽温馨的地球场景。在做的过程中,大量引用了画刷,其次还有矩形、圆角矩形、多边形、三角形、画笔、椭圆、直线等的画法。首先,在图的正中间画一条路,在路的左上边画一个小房子,在天空中画一架飞机,在路的右下边画一个简单的湖泊,在路的两边进行绿化,在路上画一个小汽车。四、 主要内容本课程设计主要用的内容有:主要用到了菜单,橡皮筋法画圆,另外还用到了画刷,其次还有矩形、圆角矩形、多边形、三角形、画笔、椭圆、直线等的画法。用到的函数很多,比如:1.定义型的函数:voidCJiangxiongView::OnDraw(CDC*pDC)、BOOLCJiangxiongView::OnPreparePrinting(CPrintInfo*pInfo)、voidCJiangxiongView::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)、voidCJiangxiongView::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)、voidCJiangxiongView::AssertValid()const、voidCJiangxiongView::Dump(CDumpContext&dc)const、CJiangxiongDoc*CJiangxiongView::GetDocument()//non-debugversionisinline、voidCJiangxiongView::OnMenuitem32771()、voidCJiangxiongView::OnMenuitem32772()、voidCJiangxiongView::OnMenuitem32773()、voidCJiangxiongView::OnMenuitem32775()、voidCJiangxiongView::OnMenuitem32774()、voidCJiangxiongView::OnMenuitem32776()、voidCJiangxiongView::DrawCircle(CDC*pDC,CPointcenp,CPointardp)、voidCJiangxiongView::OnLButtonDown(UINTnFlags,CPointpoint)、voidCJiangxiongView::OnMouseMove(UINTnFlags,CPointpoint)。2.绘图基本函数:直线:pDC->MoveTo(,);pDC->LineTo(,);矩形:pDC->Rectangle(,,,);圆角矩形:pDC->RoundRect(,,,,,);圆或者椭圆:pDC->Ellipse(,,,);文本输出:pDC->TextOut(,,"");绘制多边形:POINTpolygonPts[11]={{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,}};pDC->Polygon(polygonPts,11);五、 程序实现1.绘制公路:程序代码:voidCJiangxiongView::OnMenuitem32771(){CDC*pDC=GetDC(); //先画一条公路CBrush*pNewBrush0;CBrush*pOldBrush0;pNewBrush0=newCBrush;if(pNewBrush0->CreateSolidBrush(RGB(10,10,10))){//选择新画刷pOldBrush0=pDC->SelectObject(pNewBrush0);//绘制矩形pDC->Rectangle(0,300,2000,450);//恢复原有画刷pDC->SelectObject(pOldBrush0);}{inti=0; for(i=0;i<100;i++) pDC->Rectangle(0+(100*i),372,50+(100*i),378);}pDC->TextOut(350,350,"公路"); }2.绘制小房子:程序代码:voidCJiangxiongView::OnMenuitem32772(){CDC*pDC=GetDC();//再画小房子//画窗户CBrush*pNewBrush2;CBrush*pOldBrush2;pNewBrush2=newCBrush;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=newCBrush;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=newCBrush;if(pNewBrush4->CreateSolidBrush(RGB(255,0,0))){//选择新画刷pOldBrush4=pDC->SelectObject(pNewBrush4);{//画房顶CPenredPen(PS_SOLID,1,RGB(200,50,0));//将新画笔选入设备环境CPen*oOldPen=pDC->SelectObject(&redPen);POINTpolygonPts[4]={{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.画飞机程序代码:voidCJiangxiongView::OnMenuitem32773(){CDC*pDC=GetDC();//再画一个飞机CBrush*pNewBrush1;CBrush*pOldBrush1;pNewBrush1=newCBrush;if(pNewBrush1->CreateSolidBrush(RGB(150,200,250))){//选择新画刷pOldBrush1=pDC->SelectObject(pNewBrush1);//绘制矩形pDC->Rectangle(700,100,900,150);//绘制三角形{POINTpolygonPts[3]={{660,125},{700,100},{700,150}};pDC->Polygon(polygonPts,3);}{POINTpolygonPts[3]={{750,100},{875,50},{825,100}};pDC->Polygon(polygonPts,3);}{POINTpolygonPts[3]={{750,150},{875,200},{825,150}};pDC->Polygon(polygonPts,3);}//绘制多边形POINTpolygonPts[7]={{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.画草原及亭子:程序代码:voidCJiangxiongView::OnMenuitem32775(){CDC*pDC=GetDC();//绿化//画亭子支架及树干CPen*pNewPen;CPen*pOldPen;//构造新笔pNewPen=newCPen;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=newCBrush;if(pNewBrush5->CreateSolidBrush(RGB(0,255,0))){//选择新画刷pOldBrush5=pDC->SelectObject(pNewBrush5);//画两块草坪{POINTpolygonPts[4]={{380,240},{320,295},{1100,295},{1160,240}};pDC->Polygon(polygonPts,4);}{POINTpolygonPts[4]={{100,455},{0,600},{920,600},{1020,455}};pDC->Polygon(polygonPts,4);}//画亭盖{POINTpolygonPts[3]={{360,180},{480,180},{420,120}};pDC->Polygon(polygonPts,3);}{POINTpolygonPts[3]={{1060,180},{1180,180},{1120,120}};pDC->Polygon(polygonPts,3);}//画树叶{POINTpolygonPts[11]={{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);}{POINTpolygonPts[11]={{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.画湖泊:程序代码:voidCJiangxiongView::OnMenuitem32774(){CDC*pDC=GetDC();//画一个湖泊{CBrush*pNewBrush6;CBrush*pOldBrush6;pNewBrush6=newCBrush;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.画汽车:程序代码:voidCJiangxiongView::OnMenuitem32776(){CDC*pDC=GetDC();//画汽车 CBrush*pNewBrush6;CBrush*pOldBrush6;pNewBrush6=newCBrush;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=newCPen;if(pNewPen->CreatePen(PS_SOLID,6,RGB(0,0,0))){pOldPen=pDC->SelectObject(pNewPen);//画轮子pDC->Ellipse(500,320,530,350);pDC->Ellipse(570,320,600,350);//恢复原有的笔pDC->SelectObject(pOldPen);}}pDC->TextOut(500,300,"汽车");}六、 程序运行结果主要功能的运行结果图片:1. 总体运行界面(给出总的应用程序界面图)如下图所示:2. 绘制公路,运行结果如下:3. 绘制飞机,运行结果如下:4. 绘制小房子,运行结果如下:5. 绘制湖泊,运行结果如下:6. 绘制绿化场地,运行结果如下:7. 绘制汽车,运行结果如下:七、 总结体会在学习这门课程之前,我什么都不懂,真不知道c程序还可以绘图。通过计算机绘图课程的学习,我们才渐渐了解到c程序中可以制作的东西还是挺多的。我们从中学到了很多的程序,从知道直线的画法,到菜单的制作以及橡皮筋画圆等都有老师的教导。只是感觉,我们还没有学到真正精通的地步,很多的东西还没有真正的掌握,很多都还不会,就比如制作动画,我还是不懂。学习了这门课,我可以制作最一般,最简单的某些图画。八、 参考文献最主要的参考文献就是老师给我们的幻灯片。经过对幻灯片的仔细观看,再对照老师以前讲过的知识,若遇到自己不明白的地方就问一下同学。图书:名称:《计算机绘图基础》,作者:刘利军,出版社(未知),出版年(未知)网络资源:http://image.soso.com/image.cgi?sp=S&sc=img&cid=w.q.in.sb.img&ch=w.q.in.sb.web&ty=1&bn=&op=entry&kw=&source=&w=%BC%F2%B1%CA%BB%AD#st=0
本文档为【昆明理工大学计算机绘图大作业】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
飞哥
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:12
分类:企业经营
上传时间:2018-05-11
浏览量:13