ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:45KB ,
资源ID:13082066      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13082066.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验三_图形交互技术(完结版)Word格式.doc)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验三_图形交互技术(完结版)Word格式.doc

1、利用Resource View设计菜单,如图6-1所示;图6-1 菜单设计示例菜单 选项 绘图(&P) Pop-up=Checked 菜单项 ID值提示(Prompt) 直线 m_line 两点直线圆 m_circle 画圆,圆心和半径椭圆 m_ellipse 绘制椭圆矩形 m_rectangle 绘制矩形 添加方法:选择ViewClassWizard菜单项,弹出如图3-19所示的创建类对话框,从中选择工程名(Projects)和类名(Class name),并从Object IDs列表框中选择m_line项,在Messages列表框中选择COMMAND,然后,单击“Add Function”

2、按钮,弹出加入成员函数的对话框,输入成员函数名OnMLine,确定后就添加了OnMLine消息映射函数。参照以上方法,添加上表中其他的函数。步骤4:绘制直线按照第4章实验一任务三的步骤,实现交互式绘直线;按照第4章实验二,实现交互式画圆;但需要做如下的修改:(1)加入成员变量m_item,用于表示绘图选择项, proctected :int m_item ; / 0:不绘图,1:直线,2:圆,3:椭圆,4:矩形;(2)在构造函数中初始化变量;CJhsView:CJhsView() / TODO: add construction code here /画直线的初始化参数 m_p1.x=0; m

3、_p1.y=0; /起点 m_p2.x=0; m_p2.y=0; /终点 m_ist=0; /0,第1点;1,第2点;m_item=0; /0:/ m_bO.x=0; m_bO.y=0; /圆心 m_bR.x=0; m_bR.y=0; /圆上的点 / m_ist=0; /圆心与圆上的点区别 m_r=0; /圆的半径 (3)添加菜单驱动函数:方法是右击CjhsView类,选择消息映射函数(add window message handler)。在弹出的对话框中的class or object to handle列表中选择m_ine,按下“add and edit”,并在弹出的对话框中输入菜单驱动

4、函数的名字(OnMLine),按下“确定”键。同理,建立画圆的菜单驱动程序OnMCircle。void CJhsView:OnMLine() Add your command handler code here m_item=1;OnMCircle() m_item=2;(4)在OnDraw()中不进行绘图,主要靠鼠标绘图。OnDraw(CDC* pDC) CJhsDoc* pDoc = GetDocument();ASSERT_VALID(pDoc); add draw code for native data here /画直线 / Redraw(pDC);/ 调用自定义的成员函数,用鼠标

5、画直线(5)鼠标左击和移动程序OnLButtonDown(UINT nFlags, CPoint point) Add your message handler code here and/or call default CDC *pDC=GetDC();pDC-SelectStockObject(NULL_BRUSH);/ char tbuf10;/ sprintf(tbuf,m_item=%3d,m_item);/ AfxMessageBox(tbuf);if (m_item=1) / 绘直线 if (!m_ist) /是起点 m_p1=m_p2=point; /纪录第一次单击鼠标位置,定

6、圆心 m_ist+;else m_p2=point; /记录第二次单击鼠标的位置,定终点的点 m_ist-; / 为新绘图作准备 DDAMouseLine(pDC,m_p1.x,m_p1.y,m_p2.x,m_p2.y,RGB(255,0,0); /绘制新直线 else if (m_item=2) /绘圆 /CDC *pDC=GetDC();/pDC-m_ist) /绘制圆 m_bO=m_bR=point;m_bR=point; /记录第二次单击鼠标的位置,定圆周上的点 m_r=ComputeRadius(m_bO,m_bR);MidpointCircle(pDC,m_bO.x,m_bO.y,

7、m_r,RGB(255,0,0);ReleaseDC(pDC); /释放设备环境 CView:OnLButtonDown(nFlags, point);OnMouseMove(UINT nFlags, CPoint point) int nDrawmode=pDC-SetROP2(R2_NOT); /设置异或绘图模式,并保存原来绘图模式 if(m_ist=1) CPoint prePnt,curPnt;prePnt=m_p2; /获得鼠标所在的前一位置 curPnt=point;/绘制橡皮筋线 DDAMouseLine(pDC,m_p1.x,m_p1.y,prePnt.x,prePnt.y,R

8、GB(255,0,0);/DrawCircle(pDC,m_bO,prePnt); /用异或模式重复画圆,擦出所画的圆 DDAMouseLine(pDC,m_p1.x,m_p1.y,curPnt.x,curPnt.y,RGB(255,0,0);/DrawCircle(pDC,m_bO,curPnt); /用当前位置作为圆周上的点画圆 SetROP2(nDrawmode); /恢复原绘图模式 else if (m_item=2) /绘圆 prePnt=m_bR;m_r=ComputeRadius(m_bO,prePnt);/用异或模式重复画圆,擦出所画的圆 / DrawCircle(pDC,m_

9、bO,prePnt);m_r=ComputeRadius(m_bO,curPnt);OnMouseMove(nFlags, point);步骤五:调试、编译、运行程序。3.3 实验体会在实验进行过程中,虽然经过反复检测,但还是出现了诸多问题,其中有些问题暂未解决。虽然建立菜单过程中较顺利,但如何将文件中的变量通用还是没有调试好。虽然实验过程中还存在着较多的未解决的问题和遗憾,但我依然受益匪浅。通过对实验内容的理解和把握,我掌握图形输入和交互技术的基本方法,也掌握部分图形交互技术的实现方法。同时,进一步熟练编程语言环境中图形绘制技术。最重要的是加深了我对图形学的兴趣和认识。希望在今后的学习中,我可以加强专业技能,早日攻破这些障碍。

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

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