ImageVerifierCode 换一换
格式:DOC , 页数:12 ,大小:164.01KB ,
资源ID:10506529      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(C++实验报告(MFC简单画图程序).doc)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C++实验报告(MFC简单画图程序).doc

1、VC++程序设计实验报告 一、 实验目的 掌握MFC编程 二、 实验内容 用MFC向导创建单文档应用程序,一个简单的画图程序。 n 使用C++语言实现 n 使用VC++6.0集成开发环境开发 n 使用MFC应用程序开发框架 三、实验步骤 n 基本功能描述 1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、曲线、矩形及椭圆,线宽选项,有1-6可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2. 选择好图形后,通

2、过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。 n 设计思路 1. 对需要用到的变量进行初始化。 2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。 3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4.

3、 选择图形或其它属性,可进行下一次绘制。 n 软件设计 A 设计步骤 1.创建单文档 创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。创建成功后,系统自动生成相应的类,如图3所示。 图1 创建工程 图2 创建单文档 图3 生成类 2.编辑菜单 添加需要的菜单项,如图4所示;并在菜单的属性中设定好所对应的ID,如图5所示,各项菜单对应的ID如表1所示(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可)。 图4 添加菜单

4、项 图5 设置菜单ID 表1 菜单项对应ID 菜单名 ID 菜单名 ID 菜单名 ID 直线 ID_LINE 线宽1 ID_W1 实线 ID_SOLID 矩形 ID_RECT 线宽2 ID_W2 虚线 ID_DASH 椭圆 ID_ELLIPSE 线宽3 ID_W3 点线 ID_DOT 颜色 ID_COLOR 线宽4 ID_W4 点段线 ID_DASHDOT 填充色 ID_FILLCOLOR 线宽5 ID_W5 建立类向导,在视图类CDrawView中,对各菜单项添加对应的COMMAND消息处

5、理函数,部分菜单项还添加对应的UPDATE_COMMAND_UI消息函数,如图6所示。 图6 建立类向导 3.在相应消息函数处添加代码,实现其功能 建立类向导,在视图类CDrawView中,添加WM_PAINT消息,以及WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE消息,并在其中添加相应的代码。 B 关键功能实现 1.选择要绘制的图形 在直线、矩形以及椭圆的消息处理函数里为shape分别赋值为1,2,3,在OnPaint()函数里添加3个if语句的代码来这实现这三个图形的绘制:当选择画直线时,shape=1,则执行绘制直线代码,当

6、选择画矩形时,shape =2,则执行绘制矩形的代码,当性选择画椭圆时,shape=3,则执行绘制椭圆的代码。 2.改变线宽 在OnPaint()创建的画笔中,pen.CreatePen(penstyle,w, m_nColor),线宽处用w表示,则改变w的值即改变了画笔的粗细。选择菜单绘图→线宽选择划线宽度值,此时所选的线宽值就赋给线宽变量w。若不选择线宽值,则w=1(即默认线宽值为1)。 3.改变线型 在OnPaint()创建的画笔中,pen.CreatePen(penstyle,w, m_nColor),线型处用penstyle表示,则改变penstyle的值即改变了画笔

7、的类型。选择菜单绘图→线型选择线型,此时所选的线型就赋给线型变量penstyle。若不选择线型值,则penstyle=ID_SOLID(即默认线型为实线)。 4.改变线色 在OnPaint()创建的画笔中,pen.CreatePen(penstyle,w, m_nColor),线的颜色处用m_nColor表示,则改变m_nColor即改变了画笔的颜色。选择菜单绘图→颜色,会弹出通过WM_COLORREF从系统中引入的颜色选择对话框,选择颜色后,点击确定则相应颜色值就赋给变量m_nColor,此时画笔的颜色就会发上变化。若不选择颜色,则默认(线)颜色为黑色。 4.改变填充色

8、 在OnPaint()创建的画刷中,brush.CreateSolidBrush(m_fColor),颜色就是用m_fColor表示的,改变m_fColor即改变了画刷的颜色。选择菜单绘图→填充色,会弹出通过WM_COLORREF从系统中引入的颜色选择对话框,选择颜色后,点击确定则相应颜色值就赋给变量m_fColor,此时画刷的颜色就会发上变化。若不选择颜色,则默认填充色为黑色。 5.绘制图形 鼠标左键按下,则捕获鼠标此时的位置坐标为画图的起点,此时在OnLButtonDown()函数里,将捕获的坐标值赋给定义作为起点的变量opoint;按下鼠标左键拖动鼠标时,捕捉鼠标当前位置坐标值为终

9、点坐标值,此时在OnMouseMove()函数里,把捕获的坐标值赋给定义作为终点的变量cpoint,OnPaint()中绘图的代码中的坐标都得到了,进行绘图;鼠标左键弹起时,此时绘图结束,鼠标弹起时所在位置就是画图的最终终点位置,画图结束后,刷新窗口,以便重新画图,此时执行的是OnLButtonUp()函数。 四、 结果及源代码 4.1 运行结果 1.点击链接,编译,运行后的窗口如图7所示。 图7 运行结果 4.2 程序代码 1.在视图类构造函数中对各定义变量初始化 CDrawView::CDrawView() { w=1;//初始状态时线宽 shape

10、1;//初始状态时形状 m_nColor=RGB(0,0,0);//初始状态时线色 m_fColor=RGB(0,0,0);//初始状态时填充色 penstyle=PS_SOLID;//初始化线型为实线 } 2.形状函数 void CDrawView::OnLine() { shape=1; } void CDrawView::OnRect() { shape=2; } void CDrawView::OnEllipse() { shape=3; } 3.线宽改变函数 void CDrawView::OnW1() { w=1

11、 } void CDrawView::OnW2() { w=2; } void CDrawView::OnW3() { w=3; } void CDrawView::OnW4() { w=4; } void CDrawView::OnW5() { w=5; } void CDrawView::OnW6() { w=6; } 4. 线型选择函数 void CDrawView::OnSolid() { penstyle=PS_SOLID; } void CDrawView::OnDash() { pens

12、tyle=PS_DASH; } void CDrawView::OnDot() { penstyle=PS_DOT; } void CDrawView::OnDashdot() { penstyle=PS_DASHDOT; } 5. 颜色选择函数 void CDrawView::OnColor() { CColorDialog Color;//创建颜色对话框 if(Color.DoModal()==IDOK)//如果用户点击OK按钮 { m_nColor=Color.GetColor();//更改颜色,把颜色赋到m_nColor }

13、 } 6. 填充色选择函数 void CDrawView::OnFullcolor() { CColorDialog FullColor;//创建颜色对话框 if(FullColor.DoModal()==IDOK)//如果用户点击OK按钮 { m_fColor=FullColor.GetColor();//更改颜色,把颜色赋到m_nColor } } 7. 单击、移动、绘画函数 void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { m_Down=TRUE; //鼠标按

14、下 SetCapture(); //获取坐标 opoint=point; //把鼠标所在坐标赋给起点坐标opoint ReleaseCapture(); //释放坐标 CView::OnLButtonDown(nFlags, point); } void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { m_Down=FALSE; //鼠标不按下,即弹起 Invalidate(0); //刷新 CView::OnLButtonUp(nFla

15、gs, point); } void CDrawView::OnMouseMove(UINT nFlags, CPoint point) { if(m_Down) //如果鼠标按下 { cpoint=point; //把鼠标所在点坐标赋给终点坐标cpoint CClientDC dc(this); if(4==shape)//画曲线 { CPen pen(PS_SOLID,10,RGB(255,0,0)); CPen *oldpen=dc.SelectObject(&pen); dc.MoveTo(opo

16、int); dc.LineTo(cpoint); dc.SelectObject(oldpen); opoint=cpoint; } } CView::OnMouseMove(nFlags, point); } void CDrawView::OnPaint() { CPaintDC dc(this); // device context for painting CPen pen; //定义画笔 CBrush brush; //定义画刷 pen.CreatePen(penstyle,w, m_nCol

17、or); //创建画笔 brush.CreateSolidBrush(m_fColor); //创建画刷 dc.SelectObject(&pen); //获取画笔 dc.SelectObject(&brush); //获取画刷 if(1==shape)//画直线 { dc.MoveTo(opoint.x,opoint.y); dc.LineTo(cpoint.x,cpoint.y); //绘制直线,从opoint到cpoint连线 } if(2==shape)///画矩形 { dc.Rectangle(opoi

18、nt.x,opoint.y,cpoint.x,cpoint.y); //绘制矩形 } if(3==shape)//画椭圆 { dc.Ellipse(opoint.x,opoint.y,cpoint.x,cpoint.y);//绘制椭圆 } } 8. 菜单勾选函数 void CDrawView::OnUpdateLine(CCmdUI* pCmdUI) { pCmdUI->SetCheck(shape==1); //shape为1时,直线选项前打上勾 } void CDrawView::OnUpdateRect(CCmdUI* pCmdUI) {

19、 pCmdUI->SetCheck(shape==2); //shape为2时,直线选项前打上勾 } void CDrawView::OnUpdateEllipse(CCmdUI* pCmdUI) { pCmdUI->SetCheck(shape==3); //shape为3时,直线选项前打上勾 } void CDrawView::OnUpdateW1(CCmdUI* pCmdUI) { pCmdUI->SetRadio(w==1); //当线宽为1时,此选项前标有圆点 } void CDrawView::OnUpdateW2(CCmdUI* pCmdUI)

20、 { pCmdUI->SetRadio(w==2); //当线宽为2时,此选项前标有圆点 } void CDrawView::OnUpdateW3(CCmdUI* pCmdUI) { pCmdUI->SetRadio(w==3); //当线宽为3时,此选项前标有圆点 } void CDrawView::OnUpdateW4(CCmdUI* pCmdUI) { pCmdUI->SetRadio(w==4); //当线宽为4时,此选项前标有圆点 } void CDrawView::OnUpdateW5(CCmdUI* pCmdUI) { p

21、CmdUI->SetRadio(w==5); //当线宽为5时,此选项前标有圆点 } void CDrawView::OnUpdateW6(CCmdUI* pCmdUI) { pCmdUI->SetRadio(w==6); //当线宽为6时,此选项前标有圆点 } void CDrawView::OnUpdateSolid(CCmdUI* pCmdUI) { pCmdUI->SetRadio(penstyle==PS_SOLID); //当线型为实线时,此选项前标有圆 点 } void CDrawView::OnUpdateDash(CCmdUI* pCmd

22、UI) { pCmdUI->SetRadio(penstyle==PS_DASH); //当线型为虚线时,此选项前标有圆点 } void CDrawView::OnUpdateDot(CCmdUI* pCmdUI) { pCmdUI->SetRadio(penstyle==PS_DOT); //当线型为点线时,此选项前标有圆点 } void CDrawView::OnUpdateDashdot(CCmdUI* pCmdUI) { pCmdUI->SetRadio(penstyle==PS_DASHDOT); //当线型为点段线时,此选项前标有圆点 }

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服