图形学期末论文.doc

上传人:ng****60 文档编号:3048115 上传时间:2019-05-18 格式:DOC 页数:14 大小:224KB
下载 相关 举报
图形学期末论文.doc_第1页
第1页 / 共14页
图形学期末论文.doc_第2页
第2页 / 共14页
图形学期末论文.doc_第3页
第3页 / 共14页
图形学期末论文.doc_第4页
第4页 / 共14页
图形学期末论文.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、计算机图形学实验报告实验名称: 菜单设计期末论文 课程名称: 计算机图形学 姓名: 学号: 专业班级: 日期: 2011.10.18 地点: 成绩: 地点: 计算机图形学实验报告 .11 实验目的 .31.1 学习 VC+菜单资源编辑器,菜单程序设计举例; .31.2 学习 Autocad 绘图的基本方法,了解常用的交互式技术; .31.3 学会区域填充; .31.4 学会颜色设置。 .32 实验内容 .3步骤 1: .3步骤 2: .3步骤 3: .4步骤 4:绘制直线 .4步骤 5:主要函数的设计 .45.1 加入成员变量 m_item,用于表示绘图选择项, .45.2 在构造函数中初始化

2、变量; .45.3 添加菜单驱动函数: .45.4 在 OnDraw()中不进行绘图,主要靠鼠标绘图。 55.5 鼠标左击和移动程序 .53 程序运行结果 .54 主要代码 .84.1 直线 .84.1.1 在 CMy_jhsView()中添加变量。 .84.1.2 在 OnDraw(CDC* pDC)中调用函数。 .84.1.3 DDAMouseLine 的定义 .84.2 圆 .94.2.1 在 CMy_jhsView()中添加变量。 .94.1.2 在 OnLButtonDown 中添加代码 .94.1.3 MidpointCircle 的定义 .94.3 椭圆 .104.3.1 在 C

3、My_jhsView()中添加变量。 .104.3.2 在 OnLButtonDown 中添加代码 .104.3.3 MidpointEllise 的定义 .114.4 区域填充 .124.4.1 在 CMy_jhsView()中添加变量。 .124.4.2 在 OnDraw(CDC* pDC)中调用函数。 .124.3.3 floodfill4 的定义 .124.5 颜色设置 .144.5.1 在 CMy_jhsView()中添加变量。 .144.5.2 Redraw 的定义 .145 实验心得 .141 实验目的了解常用的图形交互技术及实现方法,学习用户接口的程序设计。1.1 学习 VC+

4、菜单资源编辑器,菜单程序设计举例;1.2 学习 Autocad 绘图的基本方法,了解常用的交互式技术;1.3 学会区域填充;1.4 学会颜色设置。2 实验内容下面通过一个实例将绘图命令放在用户界面的菜单中,通过选择绘图命令来绘图。步骤 1:创建 jhs 应用程序工程文件,选择单文档应程序;步骤 2:利用 Resource View 设计菜单,如图 6-8 所示;图 6-8 菜单设计示例菜单 选项绘图( / 0:不绘图,1:直线,2:圆,3:椭圆,4:矩形;5.2 在构造函数中初始化变量;5.3 添加菜单驱动函数:方法是右击 CjhsView 类,选择消息映射函数(add window mess

5、age handler)。在弹出的对话框中的 class or object to handle 列表中选择 m_ine,按下“add and edit ”,并在弹出的对话框中输入菜单驱动函数的名字(OnMLine),按下 “确定 ”键。同理,建立画圆的菜单驱动程序OnMCircle。5.4 在 OnDraw()中不进行绘图,主要靠鼠标绘图。5.5 鼠标左击和移动程序3 程序运行结果a.直线b.交互式画圆c.交互式画椭圆d.区域填充e.颜色设置4 主要代码4.1 直线4.1.1 在 CMy_jhsView()中添加变量。/绘制直线m_p1.x=0; m_p1.y=0; /起点m_p2.x=0;

6、 m_p2.y=0; /终点m_ist=0; /0,第 1 点;1,第 2 点;4.1.2 在 OnDraw(CDC* pDC)中调用函数。if(m_item=1)pDC-SelectStockObject(NULL_BRUSH);DDAMouseLine(pDC,m_p1.x,m_p1.y,m_p2.x,m_p2.y,RGB(0,0,0); / 调用自定义的成员函数,用鼠标画直线4.1.3 DDAMouseLine 的定义void CMy_jhsView:DDAMouseLine(CDC *pDC, int x0, int y0, int x1, int y1, COLORREF color

7、)int length,i;float x,y,dx,dy;length=abs(x1-x0);if (abs(y1-y0)length)length=abs(y1-y0);dx=(float)(x1-x0)/length;dy=(float)(y1-y0)/length;x=x0+0.5;y=y0+0.5;for (i=1;iSetPixel(int)x,(int)y,color);x=x+dx;y=y+dy;/pDC-MoveTo(x0,y0);/pDC-LineTo(x1,y1);4.2 圆4.2.1 在 CMy_jhsView()中添加变量。/绘制圆m_bO.x=0; m_bO.y=0

8、; /圆心m_bR.x=0; m_bR.y=0; /圆上的点m_ist=0; /圆心与圆上的点区别m_r=0; /圆的半径4.1.2 在 OnLButtonDown 中添加代码if(m_item=2)CDC *pDC=GetDC();pDC-SelectStockObject(NULL_BRUSH);if (!m_ist) /绘制圆m_bO=m_bR=point; /纪录第一次单击鼠标位置,定圆心m_ist+;elsem_bR=point; /记录第二次单击鼠标的位置,定圆周上的点m_ist-; / 为新绘图作准备m_r=ComputeRadius(m_bO,m_bR);MidpointCir

9、cle(pDC,m_bO.x,m_bO.y,m_r,RGB(255,0,0);ReleaseDC(pDC); /释放设备环境4.1.3 MidpointCircle 的定义void CMy_jhsView:MidpointCircle(CDC *pDC, int x0, int y0, int r, COLORREF color)int x,y;float d;x=0;y=r;d=1.25-r;CirPot(pDC,x0,y0,x,y,color);while (xSetROP2(R2_NOT); /设置异或绘图模式,并保存原来绘图模式pDC-SelectStockObject(NULL_BR

10、USH);if(m_ist=1)CPoint prePnt,curPnt;prePnt=RightBottom; /获得鼠标所在的前一位置curPnt=point;/绘制橡皮筋线CenterPoint.x=(LeftTop.x+prePnt.x)/2;CenterPoint.y=(LeftTop.y+prePnt.y)/2;a=(int)abs(prePnt.x-LeftTop.x)/2;b=(int)abs(prePnt.y-LeftTop.y)/2;MidpointEllise(pDC,CenterPoint.x,CenterPoint.y,a,b,RGB(255,0,0);/用异或模式重

11、复画圆,擦出所画的圆/用当前点作为右下角点,画椭圆 CenterPoint.x=(LeftTop.x+curPnt.x)/2;CenterPoint.y=(LeftTop.y+curPnt.y)/2;a=(int)abs(curPnt.x-LeftTop.x)/2;b=(int)abs(curPnt.y-LeftTop.y)/2;MidpointEllise(pDC,CenterPoint.x,CenterPoint.y,a,b,RGB(255,0,0);/用当前位置作为圆周上的点画圆RightBottom=point;pDC-SetROP2(nDrawmode); /恢复原绘图模式ReleaseDC(pDC); /释放设备环境

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。