版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC++程序设计试验报告一、试验目的MFC编程二、试验内容MFC向导创立单文档应用程序,一个简洁的画图程序。使用C++语言实现使用VC++6.0集成开发环境开发MFC应用程序开发框架三、试验步骤根本功能描述曲线、矩形及椭圆,线宽选项,有1-6的颜色,假设不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。定图形的大小,当鼠标弹起,此图形则绘制完毕。设计思路对需要用到的变量进展初始化。shape赋对应的值。选择不同的线宽,线色与填充色,即可转变画笔或画刷的属性。坐标,鼠标的拖动响函数OnMouseMove转变终点的坐标,鼠标的弹起响应OnLButtonUp,确定终点坐标,刷,得到绘制图形。选择图形或其它属性,可进展下一次绘制。软件设计A设计步骤MFCAppWizard[exeDraw1231/12.图1 创立工程图2 创立单文档2/12.图3 生成类2.编辑菜单ID,ID1〔其中线宽菜单为弹出菜单,只需分隔符选项即可。4添加菜单项3/12.5ID1ID菜ID菜单名ID菜单名ID单名直线ID_LINE1ID_W1实线ID_SOLID矩ID_RECT2ID_W2虚线ID_DASH形椭ID_ELLIPS3ID_W3点线ID_DOT圆E颜ID_COLOR4ID_W4点段线ID_DASHDOT色填充ID_FILLCOLOR5ID_W5色CDrawViewCOMMAND消息处理函数,局部菜单项还添加对应的UPDATE_COMMAND_UI消息函数,64/12.图6 建立类向导消息函数处添加代码,实现其功能CDrawViewWM_PAINT消息,以及WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE消息,并在B选择要绘制的图形在直线、矩形以及椭圆的消息处理函数里为shape分别赋值为1,2,3,在直线时,shape=1,则执行绘制直线代码,中选择画矩形时,shape=2,则执行绘制矩形的代码,当性选择画椭圆时,shape=3,则执行绘制椭圆的代码。转变线宽pen.CreatePen(penstyle,w,m_nColor),线宽处用ww的值即转变了画笔的粗细。选择菜单绘图→线宽选择划线宽ww=1(即默认1)。5/12转变线型的画笔中,pen.CreatePen(penstyle,w,m_nColor),线型处用转变penstyle的值即转变了画笔的类型。选择菜单绘图→线型选择线型,此时所选的线型就赋给线型变量 penstyle。假设不选择线型值,则penstyle=ID_SOLID(即默认线型为实线)。转变线色pen.CreatePen(penstyle,w,m_nColor),线的颜色m_nColor即转变了画笔的颜色。选择菜单绘图→后,点击确定则相应颜色值就赋给变量m_nColor,此时画笔的颜色就会发上变化。假设不选择颜色,则默认〔线〕颜色为黑色。转变填充色在OnPaint创立的画刷中,brush.CreateSolidBrush(m_fColor),颜色就是用WM_COLORREF击确定则相应颜色值就赋给变量m_fColor,此时画刷的颜色就会发上变化。假设不选择颜色,则默认填充色为黑色。绘制图形鼠标左键按下,则捕获鼠标此时的位置坐标为画图的起点,此时在OnLButtonDown函数里,将捕获的坐标值赋给定义作为起点的变量opoint;按下鼠标左键拖动鼠标时,捕获鼠标当前位置坐标值为终点坐标值,此时在OnMouseMove函数里,把捕获的坐标值赋给定义作为终点的变量 cpoint,OnPaint中绘图的代码中的坐标都得到了,进展绘图;鼠标左键弹起时,此时绘鼠标弹起时所在位置就是画图的最终终点位置画图完毕后刷窗口,函数。运行结果点击链接,编译,运行后的窗口如图7所示。6/12.图7 运行结果程序代码在视图类构造函数中对各定义变量初始化CDrawView::CDrawView{w=1;//初始状态时线宽shape=1;//初始状态时外形m_nColor=RGB(0,0,0);//初始状态时线色m_fColor=RGB(0,0,0);//初始状态时填充色penstyle=PS_SOLID;//初始化线型为实线}外形函数voidCDrawView::OnLine{shape=1;7/12}voidCDrawView::OnRect{shape=2;}voidCDrawView::OnEllipse{shape=3;}线宽转变函数voidCDrawView::OnW1{w=1;}voidCDrawView::OnW2{w=2;}voidCDrawView::OnW3{w=3;}voidCDrawView::OnW4{w=4;}voidCDrawView::OnW5{w=5;}voidCDrawView::OnW6{w=6;}线型选择函数voidCDrawView::OnSolid{penstyle=PS_SOLID;}voidCDrawView::OnDash{penstyle=PS_DASH;}voidCDrawView::OnDot8/12{penstyle=PS_DOT;}voidCDrawView::OnDashdot{penstyle=PS_DASHDOT;}颜色选择函数voidCDrawView::OnColor{CColorDialogColor;//创立颜色对话框if(Color.DoModal==IDOK)//OK按钮{m_nColor=Color.GetColor;//更改颜色,m_nColor}}填充色选择函数voidCDrawView::OnFullcolor{CColorDialogFullColor;//创立颜色对话框if(FullColor.DoModal==IDOK)//OK按钮{m_fColor=FullColor.GetColor;//更改颜色,m_nColor}}单击、移动、绘画函数voidCDrawView::OnLButtonDown(UINTnFlags,CPointpoint){m_Down=TRUE; //鼠标按下SetCapture; //猎取坐标opoint=point; //把鼠标所在坐标赋给起点坐标opointReleaseCapture; //释放坐标CView::OnLButtonDown(nFlags,point);}voidCDrawView::OnLButtonUp(UINTnFlags,CPointpoint){m_Down=FALSE; //鼠标不按下,即弹起Invalidate(0); //刷CView::OnLButtonUp(nFlags,point);}voidCDrawView::OnMouseMove(UINTnFlags,CPointpoint){if(m_Down) //假设鼠标按下{9/12cpoint=point; //把鼠标所在点坐标赋给终点坐标cpointCClientDCdc(this);if(4==shape)//画曲线{CPenpen(PS_SOLID,10,RGB(255,0,0));CPen*oldpen=dc.SelectObject(&pen);dc.MoveTo(opoint);dc.LineTo(cpoint);dc.SelectObject(oldpen);opoint=cpoint;}}CView::OnMouseMove(nFlags,point);}voidCDrawView::OnPaint{CPaintDCdc(this);//devicecontextforpaintingCPenpen; //定义画笔CBrushbrush; //定义画刷pen.CreatePen(penstyle,w,m_nColor); //创立画笔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);//绘制直线,opointcpoint连线}if(2==shape)///画矩形{dc.Rectangle(opoint.x,opoint.y,cpoint.x,cpoint.y);//绘制矩形}if(3==shape)//画椭圆{dc.Ellipse(opoint.x,opoint.y,cpoint.x,cpoint.y);//绘制椭圆}}菜单勾选函数voidCDrawView::OnUpdateLine(CCmdUI*pCmdUI){pCmdUI->SetCheck(shape==1); //shape1时,直线选项前打上勾}voidCDrawView::OnUpdateRect(CCmdUI*pCmdUI){10/12pCmdUI->SetCheck(shape==2); //shape2时,直线选项前打上勾}voidCDrawView::OnUpdateEllipse(CCmdUI*pCmdUI){pCmdUI->SetCheck(shape==3); //shape3时,直线选项前打上勾}voidCDrawView::OnUpdateW1(CCmdUI*pCmdUI){pCmdUI->SetRadio(w==1); //1时,此选项前标有圆点}voidCDrawView::OnUpdateW2(CCmdUI*pCmdUI){pCmdUI->SetRadio(w==2); //2时,此选项前标有圆点}voidCDrawView::OnUpdateW3(CCmdUI*pCmdUI){pCmdUI->SetRadio(w==3); //3时,此选项前标有圆点}voidCDrawView::OnUpdateW4(CCmdUI*pCmdUI){pCmdUI->SetRadio(w==4); //4时,此选项前标有圆点}voidCDrawView::OnUpdateW5(CCmdUI*pCmdUI){pCmdUI->SetRadio(w==5); //5时,此选项前标有圆点}voidCDrawView::OnUpdateW6(CCmdUI*pCmdUI){pCmdUI->SetRadio(w==6); //6时,此选项前标有圆点}voidCDrawView::OnUpdateSolid(CCmdUI*pCmdUI){pCmdUI->SetRadio(penstyle==PS_SOLID);//当线型为实线时,此选项前标有圆点}voidCDrawView::OnUpdateDash(CCmdUI*pCmdUI){pCmdUI->SetRadi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景德镇学院《国际贸易学》2025-2026学年期末试卷
- 漳州城市职业学院《外贸单证实务》2025-2026学年期末试卷
- 安徽绿海商务职业学院《电子商务基础与实务》2025-2026学年期末试卷
- 泉州医学高等专科学校《公司战略与风险管理》2025-2026学年期末试卷
- 福建农业职业技术学院《中国经济史》2025-2026学年期末试卷
- 宁德师范学院《中国近代文学史》2025-2026学年期末试卷
- 福建船政交通职业学院《安全管理工程》2025-2026学年期末试卷
- 宣城职业技术学院《康复功能评定》2025-2026学年期末试卷
- 福建理工大学《英美文学简史及名篇选读》2025-2026学年期末试卷
- 皖北卫生职业学院《妇产科护理学》2025-2026学年期末试卷
- GA/T 2329-2025法庭科学虹膜图像相似度检验技术规范
- 2025年10月自考15040习概论试题及答案
- 2024河北高考地理真题卷解析 课件
- 国家职业技术技能标准 6-29-03-03 电梯安装维修工 人社厅发2018145号
- 理发店门面转租协议
- 放化疗相关口腔黏膜炎预防及护理课件
- (2023版)小学道德与法治一年级上册电子课本
- 多维度空间课件
- 景观生态学课件
- 奋战五十天扶摇九万里-高考50天冲刺主题班会 高考倒计时主题班会课件
- 水下作业工程监理实施细则(工程通用版范本)
评论
0/150
提交评论