《计算机图形学》新版实验指导书(6)

2018-11-26 21:29

《计算机图形学》实验指导书暨实验报告

湖北汽车工业学院实验报告

班 级 课程名称

学 号

完成日期

姓 名

实验五 实现多边形的种子填充算法

一、实验目的

1、熟悉CDC图形程序库; 2、掌握多边形与区域的概念; 3、掌握多边形的种子填充算法; 二、实验性质

验证性 三、实验要求

1、认真阅读本次实验的目的,了解本次实验要求掌握的内容; 2、能够根据实验指导书的要求,完成相关的内容; 四、实验内容

(一)生成绘图应用程序的框架(如下图) 具体实现见第一次实验,过程不再详细说明。

(二)在应用程序中增加菜单

完成相关菜单的设计,具体的效果如下图所示,并设置好相关菜单消息的映射,具体的实现在前面的实验中介绍过,再此不在详细说明。

《计算机图形学》实验指导书暨实验报告

(三)在绘图函数中添加代码

通过以上步骤,得到了与菜单对应的消息映射,就可以在函数中添加代码绘制图形了。 1、利用CDC相关的绘图函数生成一个多边形(本例子中为一矩形)。 void CFillView::OnRectangle() { // TODO: Add your command handler code here CDC*pDC=GetDC();//得到绘图类指针 RedrawWindow();//重绘窗口

CPen bluepen(PS_SOLID,2,RGB(0,0,255));//创建画实线、线宽为2的蓝色画笔 CPen *old=pDC->SelectObject(&bluepen); pDC->Rectangle(50,50,120,120);

//绘制一个矩形,该函数的参数为矩形左上角和右下角坐标 }

由以上代码绘出的图形如下:

《计算机图形学》实验指导书暨实验报告

2、利用种子填充算法的思想完成对该矩形区域的填充(算法的详细原理见教材)。。 void CFillView::OnFill() { // TODO: Add your command handler code here int x,y; x=70; y=80;//设置种子点坐标

boundaryfill4(x,y,RGB(0,0,255),RGB(255,0,0)); }

void CFillView::boundaryfill4(int x, int y, int boundarycolor, int newcolor) {

//种子填充的4向算法,本算法要求待填充区域的面积不能太大, //否则会产生内存溢出的错误。 int color; CClientDC dc(this); color=dc.GetPixel(x,y); if(color!=newcolor&&color!=boundarycolor) { dc.SetPixel(x,y,newcolor); boundaryfill4(x,y+1,boundarycolor,newcolor);//填充顺序为下,上,左,右 boundaryfill4(x,y-1,boundarycolor,newcolor); boundaryfill4(x-1,y,boundarycolor,newcolor); boundaryfill4(x+1,y,boundarycolor,newcolor);

《计算机图形学》实验指导书暨实验报告

} }

由以上代码绘出的图形如下:

3、以上是本次实验的基本部分,如何利用该算法,完成任意形状的多边形区域的填充,请同学们认真考虑,完成这部分的内容,并将具体的实现过程撰写在实验报告上。 五、思考

1、任意形状的多边形如何生成; 2、任意形状的多边形如何实现填充。 六、实验总结


《计算机图形学》新版实验指导书(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:暑假中最高兴的一件事 我学会了洗碗

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: