2022年完整word版,C++实验报告.docx

上传人:Che****ry 文档编号:27255786 上传时间:2022-07-23 格式:DOCX 页数:23 大小:576.79KB
返回 下载 相关 举报
2022年完整word版,C++实验报告.docx_第1页
第1页 / 共23页
2022年完整word版,C++实验报告.docx_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《2022年完整word版,C++实验报告.docx》由会员分享,可在线阅读,更多相关《2022年完整word版,C++实验报告.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

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

3、属性,可进行下一次绘制;软件设计A 设计步骤 1. 创建单文档创建一个 MFC AppWizardexe工程,命名为“Draw” ,如图 1 所示,并创名师归纳总结 建单文档,如图 2 所示;创建胜利后,系统自动生成相应的类,如图3 所示;第 1 页,共 12 页- - - - - - -精选学习资料 - - - - - - - - - 图 1 创建工程图 2 创建单文档名师归纳总结 - - - - - - -第 2 页,共 12 页精选学习资料 - - - - - - - - - 图 3 生成类2. 编辑菜单添加需要的菜单项,如图4 所示;并在菜单的属性中设定好所对应的ID,如图 5 所示,

4、各项菜单对应的ID 如表 1 所示(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可);图 4 添加菜单项名师归纳总结 - - - - - - -第 3 页,共 12 页精选学习资料 - - - - - - - - - 图 5 设置菜单 ID 表 1 菜单项对应 ID 菜ID 菜单名ID 菜单名ID 单名直ID_LINE 线宽 1 ID_W1 实线ID_SOLID 线矩ID_RECT 线宽 2 ID_W2 虚线ID_DASH 形椭ID_ELLIPS线宽 3 ID_W3 点线ID_DOT 圆E ID_W4 点段线ID_DASHDOT

5、 颜ID_COLOR 线宽 4 色填ID_FILLCO线宽 5 ID_W5 充LOR 色建立类向导,在视图类 CDrawView 中,对各菜单项添加对应的 COMMAND 消息处理函数,部分菜单项仍添加对应的 UPDATE_COMMAND_UI 消息函数,如图 6 所示;名师归纳总结 - - - - - - -第 4 页,共 12 页精选学习资料 - - - - - - - - - 图 6 建立类向导3. 在相应消息函数处添加代码,实现其功能建立类向导,在视图类CDrawView 中,添加 WM_PAINT 消息,以及WM_LBUTTONDOWN 、WM_LBUTTONUP 、WM_MOUSE

6、MOVE 消息,并在 其中添加相应的代码;B 关键功能实现 1.挑选要绘制的图形shape 分别赋值为1,2,3 ,在在直线、矩形以及椭圆的消息处理函数里为OnPaint函数里添加 3 个 if语句的代码来这实现这三个图形的绘制:当挑选画直线时, shape=1,就执行绘制直线代码,当挑选画矩形时,shape =2, 就执行绘制矩形的代码,当性挑选画椭圆时 2. 转变线宽, shape=3, 就执行绘制椭圆的代码;在 OnPaint创建的画笔中, pen.CreatePenpenstyle,w, m_nColor,线宽处用 w 表示,就转变 w 的值即转变了画笔的粗细;挑选菜单绘图线宽挑选划线

7、宽 度值,此时所选的线宽值就赋给线宽变量 w;如不挑选线宽值,就 w=1即默认 线宽值为 1 ;名师归纳总结 - - - - - - -第 5 页,共 12 页精选学习资料 - - - - - - - - - 3. 转变线型在 OnPaint创建的画笔中, pen.CreatePenpenstyle,w, m_nColor,线型处用penstyle 表示,就转变 penstyle 的值即转变了画笔的类型;挑选菜单绘图线型挑选线型,此时所选的线型就赋给线型变量penstyle;如不挑选线型值,就penstyle=ID_SOLID即默认线型为实线 ;4. 转变线色在 OnPaint创建的画笔中,

8、pen.CreatePenpenstyle,w, m_nColor,线的颜色处用 m_nColor 表示,就转变m_nColor 即转变了画笔的颜色;挑选菜单绘图颜色,会弹出通过 WM_COLORREF 从系统中引入的颜色挑选对话框,挑选颜色后,点击确定就相应颜色值就赋给变量m_nColor,此时画笔的颜色就会发上变化;如不挑选颜色,就默认(线)颜色为黑色;4. 转变填充色 在 OnPaint创建的画刷中, brush.CreateSolidBrushm_fColor,颜色就是用 m_fColor 表示的,转变 m_fColor 即转变了画刷的颜色; 挑选菜单绘图填充色,会弹出通过 WM_CO

9、LORREF 从系统中引入的颜色挑选对话框,挑选颜色后, 点击确定就相应颜色值就赋给变量m_fColor ,此时画刷的颜色就会发上变化;如不挑选颜色,就默认填充色为黑色;5. 绘制图形 鼠 标 左 键 按 下 , 就 捕获 鼠 标 此 时 的 位 置 坐标 为 画 图 的 起 点 , 此 时 在 OnLButtonDown 函数里,将捕获的坐标值赋给定义作为起点的变量 opoint;按 下鼠标左键拖动鼠标时,捕获鼠标当前位置坐标值为终点坐标值,此时在 OnMouseMove函数里,把捕获的坐标值赋给定义作为终点的变量 cpoint,OnPaint中绘图的代码中的坐标都得到了,进行绘图;鼠标左键

10、弹起时,此时绘图终止,鼠标弹起时所在位置就是画图的最终终点位置,以便重新画图,此时执行的是 OnLButtonUp 函数;四、 结果及源代码4.1 运行结果1. 点击链接,编译,运行后的窗口如图 7 所示;画图终止后,刷新窗口,名师归纳总结 - - - - - - -第 6 页,共 12 页精选学习资料 - - - - - - - - - 图 7 运行结果4.2 程序代码1. 在视图类构造函数中对各定义变量初始化CDrawView:CDrawView w=1;/ 初始状态时线宽shape=1;/初始状态时外形 m_nColor=RGB0,0,0;/ 初始状态时线色m_fColor=RGB0,0

11、,0;/ 初始状态时填充色 penstyle=PS_SOLID;/ 初始化线型为实线 2. 外形函数void CDrawView:OnLine shape=1; 名师归纳总结 - - - - - - -第 7 页,共 12 页精选学习资料 - - - - - - - - - void CDrawView:OnRect shape=2; void CDrawView:OnEllipse shape=3; 3. 线宽转变函数void CDrawView:OnW1 w=1; void CDrawView:OnW2 w=2; void CDrawView:OnW3 w=3; void CDrawVie

12、w:OnW4 w=4; void CDrawView:OnW5 w=5; void CDrawView:OnW6 w=6; 4. 线型挑选函数void CDrawView:OnSolid penstyle=PS_SOLID; void CDrawView:OnDash penstyle=PS_DASH; void CDrawView:OnDot 名师归纳总结 - - - - - - -第 8 页,共 12 页精选学习资料 - - - - - - - - - penstyle=PS_DOT; void CDrawView:OnDashdot penstyle=PS_DASHDOT; 5. 颜色挑

13、选函数void CDrawView:OnColor CColorDialog Color;/ 创建颜色对话框ifColor.DoModal=IDOK/假如用户点击OK 按钮 m_nColor=Color.GetColor;/ 更换颜色 ,把颜色赋到 m_nColor 6. 填充色挑选函数void CDrawView:OnFullcolor CColorDialog FullColor;/ 创建颜色对话框 ifFullColor.DoModal=IDOK/ 假如用户点击 OK 按钮 m_fColor=FullColor.GetColor;/更换颜色 ,把颜色赋到m_nColor 7. 单击、移动

14、、绘画函数void CDrawView:OnLButtonDownUINT nFlags, CPoint point m_Down=TRUE; /鼠标按下opoint SetCapture; /猎取坐标opoint=point; /把鼠标所在坐标赋给起点坐标ReleaseCapture; /释放坐标CView:OnLButtonDownnFlags, point; void CDrawView:OnLButtonUpUINT nFlags, CPoint point m_Down=FALSE; /刷新/鼠标不按下,即弹起Invalidate0; CView:OnLButtonUpnFlags,

15、 point; void CDrawView:OnMouseMoveUINT nFlags, CPoint point ifm_Down /假如鼠标按下 名师归纳总结 - - - - - - -第 9 页,共 12 页精选学习资料 - - - - - - - - - cpoint=point; /把鼠标所在点坐标赋给终点坐标cpoint CClientDC dcthis; if4=shape/ 画曲线 CPen penPS_SOLID,10,RGB255,0,0; CPen *oldpen=dc.SelectObject&pen; dc.MoveToopoint; dc.LineTocpoin

16、t; dc.SelectObjectoldpen; opoint=cpoint; CView:OnMouseMovenFlags, point; void CDrawView:OnPaint CPaintDC dcthis; / device context for painting CPen pen; /定义画笔 CBrush brush; /定义画刷 pen.CreatePenpenstyle,w, m_nColor; /创建画笔 brush.CreateSolidBrushm_fColor; /创建画刷 dc.SelectObject&pen; /猎取画笔 dc.SelectObject

17、&brush; /猎取画刷 if1=shape/ 画直线 dc.MoveToopoint.x,opoint.y; dc.LineTocpoint.x,cpoint.y; / 绘制直线 ,从 opoint 到 cpoint 连线 if2=shape/ 画矩形 dc.Rectangleopoint.x,opoint.y,cpoint.x,cpoint.y; / 绘制矩形 if3=shape/ 画椭圆 dc.Ellipseopoint.x,opoint.y,cpoint.x,cpoint.y;/ 绘制椭圆 8. 菜单勾选函数void CDrawView:OnUpdateLineCCmdUI* pCm

18、dUI pCmdUI-SetCheckshape=1; /shape为 1 时,直线选项前打上勾void CDrawView:OnUpdateRectCCmdUI* pCmdUI 名师归纳总结 - - - - - - -第 10 页,共 12 页精选学习资料 - - - - - - - - - pCmdUI-SetCheckshape=2; /shape为 2 时,直线选项前打上勾void CDrawView:OnUpdateEllipseCCmdUI* pCmdUI pCmdUI-SetCheckshape=3; /shape为 3 时,直线选项前打上勾void CDrawView:OnUp

19、dateW1CCmdUI* pCmdUI pCmdUI-SetRadiow=1; /当线宽为 1 时,此选项前标有圆点void CDrawView:OnUpdateW2CCmdUI* pCmdUI pCmdUI-SetRadiow=2; /当线宽为 2 时,此选项前标有圆点void CDrawView:OnUpdateW3CCmdUI* pCmdUI pCmdUI-SetRadiow=3; /当线宽为 3 时,此选项前标有圆点void CDrawView:OnUpdateW4CCmdUI* pCmdUI pCmdUI-SetRadiow=4; /当线宽为 4 时,此选项前标有圆点void CD

20、rawView:OnUpdateW5CCmdUI* pCmdUI pCmdUI-SetRadiow=5; /当线宽为 5 时,此选项前标有圆点void CDrawView:OnUpdateW6CCmdUI* pCmdUI pCmdUI-SetRadiow=6; /当线宽为 6 时,此选项前标有圆点void CDrawView:OnUpdateSolidCCmdUI* pCmdUI pCmdUI-SetRadiopenstyle=PS_SOLID; /当线型为实线时,此选项前标有圆点 void CDrawView:OnUpdateDashCCmdUI* pCmdUI pCmdUI-SetRadi

21、openstyle=PS_DASH; / 当线型为虚线时,此选项前标有圆点void CDrawView:OnUpdateDotCCmdUI* pCmdUI pCmdUI-SetRadiopenstyle=PS_DOT; / 当线型为点线时,此选项前标有圆点void CDrawView:OnUpdateDashdotCCmdUI* pCmdUI 名师归纳总结 - - - - - - -第 11 页,共 12 页精选学习资料 - - - - - - - - - pCmdUI-SetRadiopenstyle=PS_DASHDOT; /当线型为点段线时,此选项前标有圆点 名师归纳总结 - - - - - - -第 12 页,共 12 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁