《计算机图形学》新版实验指导书docxWord下载.docx

上传人:b****3 文档编号:13784433 上传时间:2022-10-13 格式:DOCX 页数:33 大小:859.03KB
下载 相关 举报
《计算机图形学》新版实验指导书docxWord下载.docx_第1页
第1页 / 共33页
《计算机图形学》新版实验指导书docxWord下载.docx_第2页
第2页 / 共33页
《计算机图形学》新版实验指导书docxWord下载.docx_第3页
第3页 / 共33页
《计算机图形学》新版实验指导书docxWord下载.docx_第4页
第4页 / 共33页
《计算机图形学》新版实验指导书docxWord下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

《计算机图形学》新版实验指导书docxWord下载.docx

《《计算机图形学》新版实验指导书docxWord下载.docx》由会员分享,可在线阅读,更多相关《《计算机图形学》新版实验指导书docxWord下载.docx(33页珍藏版)》请在冰豆网上搜索。

《计算机图形学》新版实验指导书docxWord下载.docx

AppWizard为框架的建立提供了一系列对话框及多种选项,用户可以根据不同的选项生成自己所需要的应用程序框架。

具体步骤如下:

1、从“文件”菜单选择“新建”菜单项,在“新建”对话框中选择“工程”选项卡,从项目类型中选择MFCAppWizard(.exe)。

在“位置”文本框中,可直接输入目录名称,或者单击“…”按钮选择己有的目录。

在“工程名称”文本框中输入项H的名称,如Draw,其他采用默认值,这时确定按钮变亮,如下图所示:

2、单击确定按钮,弹出“MFC应用程序向导步骤1”对话框,如图所示,选择单文档单选按钮和“中文[中国]”选项,表示要生成以中文为用户界面的单文档(SD1绘图程序)。

3、点击下一步,在随后出现的几个对话框中,都点击下一步,表示采用各项的默认设置,直到出现“MFC应用程序向导步骤6”对话框,如图所示。

4、“MFC应用程序向导步骤6”对话框中默认设置确定了类得名称及其所在文件的名

称。

用户可以改CdrawApp、CmainFrame和CdniwDoc的文件名称,但不可以改变它们的基类。

单击完成按钮,应用程序向导显示将要创建的文件清单,再单击确定,MFC应用程序向导就自动生成绘图程序的各项源文件了。

MFC应用程序向导设置完后,点击组建按钮,然后再点击执行按钮,就会出现MFC应用程序向导生成的完整应用程序的基本框架。

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

1、增加菜单资源

打开资源浏览器窗口,显示程序资源,单击DrawResources左边的“+”,使文件夹扩展,然后双击“Menu"

项下的“IDR_MAINFRAME”标识符,打开菜单编辑器窗口,单击“帮助”菜单,按Insert键,插入一个空白框,输入新菜单名“绘图”,如下所示:

双击“绘图”下方的空白框,在“绘图”菜单下增加“绘图练习”的子菜单,并给其设定一个ID值ID_Exercise,如下所示:

2、进行菜单命令的消息映射

若使系统执行对菜单的单击选择,必须把这些菜单命令消息都映射给文档类。

选择“查看”菜单下的“建立类向导”菜单项,在“建立类向导”对话框屮选择“MessageMaps”选项卡,在"

Classname”下拉列表框中选择“CdrawView”类,在“ObjectIDs”列表框中选择TD_Exercise”,在"

Message"

列表框中选择“COMMAND”,然后单击AddFunction按钮,会出现一个对话框,给出了默认的成员函数名称OnExercise,单击OK按钮,就完成了对菜单“绘图练习”消息映射。

这时在"

ClassView"

面板中展开CDrawView类,会看到多了一个函数OnExercise。

■FCClassYizard

MessageMapsMemberVariables|Automation|ActiveXEvents|ClassInfo

Description:

Handleacommand(frommenu”acceLcmdbutton)

确定I取消

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

通过以上步骤,得到了与菜单对应的消息映射,就可以在函数OnExcrcisc屮添加代码绘制图形了。

voidCDrawView:

:

OnExercise()

{

//TODO:

AddyourcommandhandlercodehereCDC*pDC=GetDC();

//得到绘图类指针RedrawWindow();

//重绘窗口pDC->

Rectangle(50,20,700,400);

〃以默认画笔画一矩形

CPenbluepen(PS_DASH」,RGB(0,0,255));

//创建画虚线、线宽为1的蓝色画笔

CPen*old=pDC->

SelectObject(&

blucpcn);

pDC->

Ellipse(100,50,250,200);

//画圆

CPenredpen(PS_SOLID,2,RGB(255,0,0));

//创建画煨线、线宽为2的红色画笔pDC->

redpen);

Ellipse(500,50,650,200);

//画圆

MoveTo(375J00);

//画一三角形pDC->

LineTo(225,300);

LineTo(525,300);

LineTo(373,100);

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

五、思考

1、MFC工程项冃与Win32ConsoleApplication项冃有何区别?

2、如果我们不采用系统已有的函数来绘制图形,自己如何去设计相应的函数?

3、利用MFC编程来开发图形应用程序的基本步骤主要有儿步。

六、实验总结

学号姓名

课程名称

完成日期

实验二实现直线的生成算法

1、进一步熟悉CDC图形程序库;

2、掌握数值微分直线生成算法;

3、掌握屮点画线算法;

4>掌握Bresenham直线生成算法。

3、根据实验指导书提供的基本思想,完成任意斜率直线的生成。

(一)生成绘图应用程序的框架(如下图)

具体实现见第一次实验,过程不再详细说明。

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

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

(三)在应用程序中增加一个直线参数设置的对话框

在VC++6.0环境中打开资源视图,插入一个对话框,如图所示:

然后出现下图:

在该对话框中设计四个静态文本框,四个文本编辑框,并删除取消按钮,最终设计出下面的效果。

设计完该对话框之后,为该对话框建立一个类,右键点击该对话框,出现下图:

 

为该类设计一个名字,如下所示:

点击确定后,出现下图:

MessageMapsMemberVariablesAutomationActiveXEvents

Project:

drawline

ID_AI>

I>

_ABOUI

IDAPPEXITID.BREID-DDAID-EDIT.COPYID-EDIT_CUTID_EDIT_PASTE

V

Dl..MnputLineInfo.kDl.AInputLInelnfo.cpp

ObjectIDs:

ClassInfo

Memberfunctions:

VDoDatarxchange

Description:

取消

确定

然后再给对话框中的I丿L|个文本编辑框添加成员变量,如下所示:

成员变量设计完成后,出现下图:

到此为止,对话框设计完成,这时候打开文件视图,打开drawJineView.h,将InputLinelnfo.h包含进去。

drawlincVicw・h♦

口口冈

//drawIineView・h:

interfaceo-

//J

#incIude"

InputLineInfo.h|"

#if!

defined(AFX_DRAW_LINEVIEW_H

#defineAFXDRAWLINEVIEWH62D(#if_MSC_VER>

1000

#pragmaonce

2Tz

#endif//MSCVER>

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

通过以上步骤,得到了与菜单对应的消息映射,就可以在函数中添加代码绘制图形了。

1、利用数值微分算法生成直线(算法的详细原理见教材)。

voidCDraw_LineView:

OnDda()

Addyourcommandhandlercodehere

InputLinelnfoDig;

Dlg.DoModal();

〃打开直线参数设置对话框

CDC*pDC=GetDC();

//得到绘图类指针

//RedrawWindow();

//重绘窗口

intx,xO,yO,xl,yl;

//(xO,yO)为直线的起点,(xl,yl)为直线的终点

floatdx,dy,k,y;

xO=Dlg.qidian_x,yO=Dlg.qidian_y;

x1=Dlg.zhongdian_x,y1=Dlg.zhongdian_y;

dx=xl-xO;

dy=yl-yO;

k=dy/dx;

y二yO;

for(x=xO;

x<

=x1;

x++)

SetPixel(x,int(y+0.5),RGB(255,0,0));

y二y+k;

}

2、利用中点画线算法生成直线(算法的详细原理见教材)。

OnMid()

InputLinelnfoDig;

〃打开直线参数设置对话框CDC*pDC=GetDC();

//W到绘图类指针//RedrawWindow();

intxO,yO,xl,yl;

inta,b,deltal,delta2,d,x,y;

x1=Dlg.zhongdian_x,y1=Dlg.zhongdian_y;

a=yO-y1;

b=xl-xO;

d=2*a+b;

deltal=2*a;

delta2=2*(a+b);

x=xO;

y=yo;

pDC・>

SetPixel(x,y,RGB(0,0,255));

//SetPixel为CDC类里面的画点函数,具体参数while(x<

xl)〃有3个,分别是点的坐标和画点所用的颜色。

if(d<

0)

{x++;

y++;

d+=delta2;

else

d+=deltal;

SetPixel(x,y,RGB(0,255,0));

3、利用Bresenham画线算法生成直线(算法的详细原理见教材)

OnBre()

Dlg.DoModalO;

/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1