软件工程专业课程设计(2012/2013学年第2学期)题目:简易画图板的设计与实现专业软件工程学生姓名HJC指导教师lsw指导单位电子与信息工程学院软件工程专业日期2013年7月18日教师评语教师签名:年月日成绩评定备注一、课题名称设计题目:简易画图板的设计与实现二、课题内容和要求利用MFC完成画图板的基本功能。此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、三角形、任意多边形的绘制。并且能实现绘图的控制,包括画笔宽度,画笔样式和画笔颜色,画刷样式,画刷颜色和字体的设置,图形的保存和打开。需求分析1)在单文档菜单中,在菜单行中可插入一个菜单项,命名为绘图工具,在下拉菜单中可分别设置绘制的图形形状,如直线、矩形及椭圆,再插入一个菜单项,命名为设定,可提供画笔、画刷的样式及颜色选择,还有字体的设置。如果不选择,则按默认的画笔,画刷字体来绘制图形。2)选择好图形后,通过鼠标可以绘制出相应的直线,矩形,椭圆,三角形及任意多边形,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。3)增添工具栏,设置绘制的图形形状,线色以及填充色,可更方便地选择相应的功能。四、概要设计1)对需要用到的变量进行初始化。2)选择相应的图形之后就响应相应的消息处理函数,给m_shapeType赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。3)鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。4)选择图形或其它属性,可进行下一次绘制。开始定义并初始化变shape线色m_ncolor填充色m_fcolor画笔pen画刷brush绘图起点opoint绘图终点cpoint选择线宽默认值(w=1)改变画笔属性选择线色默认值(黑色)改变画笔属性选择填充色默认值(黑色)改变画刷属性椭圆矩形直线响应函数OnEllipse()shape=3响应函数OnLine()shape=1响应函数OnRect()shape=2鼠标左键按下响应函数OnLButtonDown()opoint=point鼠标移动响应函数OnMouseMove()epoint=point响应OnPaint(),绘制图形鼠标左键弹起响应函数OnLButtonUp()刷新,得到图形结束图1程序流程图五、详细设计1)创建单文档2)编辑菜单3)创建工具栏4)在相应消息函数处添加代码,实现其功能5)选择要绘制的图形6)改变线宽7)改变线色,画刷颜色等8)改变图形样式,文字样式9)绘制图形10)关键代码①任意多边形的绘制及填充:voidCDrawView::OnLButtonDown(UINTnFlags,CPointpoint) { //TODO:在此添加消息处理程序代码和/lientDCdc(this); if(first) { newpoint[0]=newpoint[1]=point; first=false; } else { newpoint[++count]=point; if(count>=30) { //MessageBox("数组CPointnewpoint[30]下标越界!\a"); return; } (newpoint[count-1]); (newpoint[count]); } CView::OnLButtonDown(nFlags,point); }voidCDrawView::OnLButtonUp(UINTnFlags,CPointpoint) { //TODO:在此添加消息处理程序代码和/lientDCdc(this); (newpoint[count-1]); (newpoint[count]); if(!move) first=true; CView::OnLButtonUp(nFlags,point); }voidCDrawView::OnLButtonDblClk(UINTnFlags,CPointpoint) { //TODO:在此添加消息处理程序代码和/lientDCdc(this); (newpoint[count]); (newpoint[0]); (GRAY_BRUSH); (newpoint,count+1); first=true; move=false; count=1; CView::OnLButtonDblClk(nFlags,point); }voidCDrawV
c 课程设计报告(简易画图板) 来自淘豆网www.taodocs.com转载请标明出处.