您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页计算机图形学上机实验2_交互实现多边形绘画并填充

计算机图形学上机实验2_交互实现多边形绘画并填充

来源:爱够旅游网


昆 明 理 工 大 学 理 学 院 信息与计算科学专业 操作性实验报告

年级: 10级 姓名: 刘陈 学号: 201011101128 指导教师: 胡杰

实验课程名称: 计算机图形学程序设计 开课实验室: 理学院机房216 实验成绩: 学风(5) 观察能力(15) 操作能力(30) 调试能力(50) 其它 总分

实验内容:

1.实验/作业题目:用计算机高级语言VC++6.0实现计算机的基本图元绘制 2.实验/作业课时:2学时

3.实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能): 实验环境:(1)硬件:每人一 台PC机

(2)软件:windows OS,VC++6.0或以上版本。 试验内容及步骤:

(1)在VC++环境下创建MFC应用程序工程(单文档) (2)编辑菜单资源

(3)添加菜单命令消息处理函数 (4)添加成员函数 (5)编写函数内容 试验要求

(1)试验前自习课本第2章内容,编写相关程序。

建立一VC++单文档工程,在菜单项中建立图形绘图菜单(包括绘制直线、折线、矩形、(椭)圆、多边形)和区域填充菜单项。 (2)实现对(椭)圆和多边形的填充。

(3)试验中调试、完善所编程序,能正确运行出设计要求结果。 (4)书写试验报告上交。

第1页

4.程序结构(程序中的函数调用关系图)

添加消息处理函数 实现交互式 实现绘图 用多边形扫描填充算法

5.算法描述、流程图或操作步骤:

在lab2View.h文件中的public内添加变量 CPoint v[30]; int index; bool first; bool move;

在lab2View.cpp文件中的函数CLab2View::CLab2View()下添加如下代码:

index = 1; //定义工作区

第2页

first = true; move = false;

添加对应于鼠标消息WM_LBUTTONDDlClK的消息处理函数OnLButtonDblClk(); 并在其中添加如下代码: CClientDC dc(this); dc.MoveTo(v[index]); dc.LineTo(v[0]);

CPen MyPen,*OldPen; // 颜色填充

MyPen.CreatePen(PS_SOLID,1,RGB(0,0,255)); OldPen=dc.SelectObject(&MyPen); CBrush MyBrush,*OldBrush;

MyBrush.CreateSolidBrush(RGB(0,255,0)); OldBrush=dc.SelectObject(&MyBrush); //dc.SelectStockObject(GRAY_BRUSH); dc.Polygon(v,index+1); first = true; move = false; index = 1;

添加对应于鼠标消息WM_LBUTTONDOWN的消息处理函数OnLButtonDown();

第3页

并在其中添加如下代码: CClientDC dc(this);

if (first)

{ v[0] = v[1] = point;

first = false; }

添加对应于鼠标消息WM_LBUTTONUP的消息处理函数OnLButtonUp(); 并在其中添加如下代码: CClientDC dc(this);

dc.MoveTo(v[index-1]); dc.LineTo(v[index]); else

{ v[++index] = point; }

if (index>=30) {

MessageBox(\"数组 CPoint v[30] 下标越界!\\a\"); return; }

dc.MoveTo(v[index-1]); dc.LineTo(v[index]);

第4页

if (!move)

first = true;

添加对应于鼠标消息WM_ MOUSEMOVE的消息处理函数OnMouseMove ();

并在其中添加如下代码: CClientDC dc(this); if (nFlags == MK_LBUTTON)

{ move = true;

dc.SetROP2(R2_NOTXORPEN);

dc.MoveTo(v[index-1]); dc.LineTo(v[index]); v[index] = point; dc.MoveTo(v[index-1]); dc.LineTo(v[index]);

}

添加菜单项ID_ Fillcolor的消息映射函数添加任何代码: CClientDC dc(this); //自动生成多边形并填充 CPen MyPen,*OldPen; MyPen.CreatePen(PS_SOLID,1,RGB(0,0,255));

第5页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务