计算机图形学上机实验2-交互实现多边形绘画并填充
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)软件:windows OS,VC++6.0或以上版本。
试验内容及步骤:
(1)在VC++环境下创建MFC应用程序工程(单文档)
(2)编辑菜单资源
(3)添加菜单命令消息处理函数
(4)添加成员函数
(5)编写函数内容
试验要求
(1)试验前自习课本第2章内容,编写相关程序。
建立一VC++单文档工程,在菜单项中建立图形绘图菜单(包括绘制直线、折线、矩形、(椭)圆、多边形)和区域填充菜单项。
(2)实现对(椭)圆和多边形的填充。
(3)试验中调试、完善所编程序,能正确运行出设计要求结果。
(4)书写试验报告上交。
第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;
第4页
move = false;
index = 1;
添加对应于鼠标消息WM_LBUTTONDOWN的消息处理函数OnLButtonDown();
并在其中添加如下代码:
CClientDC dc(this);
if (first)
{ v[0] = v[1] = point;
first = false; }
else
{ v[++index] = point;
if (index>=30)
{MessageBox("数组CPoint v[30] 下标越界!\a");
return; }
dc.MoveTo(v[index-1]);
dc.LineTo(v[index]);
}
第5页
添加对应于鼠标消息WM_LBUTTONUP的消息处理函数OnLButtonUp();
并在其中添加如下代码:
CClientDC dc(this);
dc.MoveTo(v[index-1]);
dc.LineTo(v[index]);
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]);
第6页
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));
OldPen=dc.SelectObject(&MyPen);
CBrush MyBrush,*OldBrush;
MyBrush.CreateSolidBrush(RGB(100,55,150));
OldBrush=dc.SelectObject(&MyBrush);
CPoint p[4];
p[0].x=100;p[0].y=200;
p[1].x=250;p[1].y=150;
p[2].x=200;p[2].y=300;
第7页
第8页
p[3].x=400;p[3].y=350;
dc.Polygon(p,4);
6.实验数据和实验结果(用屏幕图形表示,可另加附页):打开Dubug 内lab2.exe 点击菜单栏“多边形绘画及填充”,在工作区绘画多边形,画好后双击左键便完成填充了。还有另加一个自动绘画多边形并填充的选项。结
果如下:
7.改进建议:
虽然可以用不同颜色填充,但要在源码理改,太麻烦,希望能
实现在菜单栏加入颜色选项,可以方便用多种颜色填充,并改进多边形最后一条边实现封闭问题。
评分标准学风--报告格式规范,文字清晰观察能力--正确描述和理解需要操作的问题
操作能力--正确输入程序,熟悉编程环境调试能力--熟练使用调试功能解决程序错误
第9页