1、基于C+net的绘图软件的实现课程设计报告书VC+.net程序设计课程设计报告书题目: 绘图软件的设计 班级: 0991151 学号: 1099115113 姓名: 姜远飞 教师: 姚 璐 周期: 2010.12.272010.12.31 成绩: 2010年12月30日绘图软件的设计一、课程设计的目的与要求 (一)课程设计目的与任务用VC+.NET实现画图软件的功能。可以实现圆、矩形、画笔的绘图,并能选择相应的边框颜色和填充颜色,选择线宽和线的类型。(二)题目要求单文档应用程序,能够选择图形的类型(圆,矩形,直线,画笔),能够选择图形的颜色,能够对绘制的图形进行颜色填充,能够选择图形的线型(如
2、实线,点线,虚线等),能够选择画线的颜色和线的宽度。二、设计正文1 系统分析和开发背景用VC+.NET开发画图应用软件的功能。实现和用户的交互,根据用户的选择来实现相应图形的绘制。2 功能详细描述以菜单选择为主,根据用户的不同菜单选择来改变当前所要绘制的图形。用“画图”菜单下的“类型”菜单来选择所要绘制的图形是圆、矩形、直线还是画笔。用“画图”菜单下的“颜色”菜单来编辑所要绘制图形的边框颜色。用“画图”菜单下的“线性”菜单来选择边框的线性(实线、虚线、点线)。用“画图”菜单下的“线宽”菜单来选择边框的宽度。用“画图”菜单下的“填充”菜单来实现对所绘制的圆和矩形进行颜色填充。用“画图”菜单下的“
3、橡皮”菜单来实现对所绘制的图形进行擦除。3、数据结构和数据库设计4、主要功能逻辑过程和实现算法图的绘制主要在鼠标的左键按下、鼠标移动、鼠标左键松开的事件中来完成。类型、颜色、线形、线宽、填充、橡皮等都用相应的变量值来表示。当选择某一种操作后,相应的变量值会改变,依次来判断用户的选择。实现算法如下:void ChuatuView:OnLButtonDown(UINT nFlags, CPoint point) / 按下鼠标左键 if(type=5) p1=point; medc=new CClientDC(this); medc-SelectStockObject(WHITE_PEN); med
4、c-SelectStockObject(WHITE_BRUSH); pdc-SelectStockObject(BLACK_PEN); pdc-SelectStockObject(WHITE_BRUSH); pdc-Rectangle(p1.x-xpwidth,p1.y-xpwidth,p1.x+xpwidth,p1.y+xpwidth); else p1=p2=point; pen.CreatePen(style,width,color); pdc-SelectObject(&pen); if(tc) bsh.CreateHatchBrush(tcstyle,tccolor); pdc-Se
5、lectObject(&bsh); else pdc-SelectStockObject(NULL_BRUSH); pdc-SetROP2(R2_NOTXORPEN); b=true; CView:OnLButtonDown(nFlags, point);void ChuatuView:OnMouseMove(UINT nFlags, CPoint point) / 移动鼠标 if(!b) return; if(type=1) pdc-MoveTo(p1.x,p1.y); pdc-LineTo(p2.x,p2.y); p2=point; pdc-MoveTo(p1.x,p1.y); pdc-L
6、ineTo(p2.x,p2.y); else if(type=2) pdc-Ellipse(p1.x,p1.y,p2.x,p1.y+(p2.x-p1.x); p2=point; pdc-Ellipse(p1.x,p1.y,p2.x,p1.y+(p2.x-p1.x); else if(type=3) pdc-Rectangle(p1.x,p1.y,p2.x,p2.y); p2=point; pdc-Rectangle(p1.x,p1.y,p2.x,p2.y); else if(type=4) pdc-MoveTo(p1.x,p1.y); pdc-LineTo(point.x,point.y);
7、p1=point; else if(type=5) medc-Rectangle(p1.x-xpwidth,p1.y-xpwidth,p1.x+xpwidth,p1.y+xpwidth); p1=point; pdc-Rectangle(p1.x-xpwidth,p1.y-xpwidth,p1.x+xpwidth,p1.y+xpwidth); CView:OnMouseMove(nFlags, point);void ChuatuView:OnLButtonUp(UINT nFlags, CPoint point) /释放鼠标左键 if(type=5) medc-Rectangle(p1.x-
8、xpwidth,p1.y-xpwidth,p1.x+xpwidth,p1.y+xpwidth); else pdc-SetROP2(R2_COPYPEN); if(type=1) pdc-MoveTo(p1.x,p1.y); pdc-LineTo(point.x,point.y); else if(type=2) pdc-Ellipse(p1.x,p1.y,point.x,p1.y+(point.x-p1.x); else if(type=3) pdc-Rectangle(p1.x,p1.y,point.x,point.y); else if(type=4) pdc-MoveTo(p1.x,p
9、1.y); pdc-LineTo(point.x,point.y); b=false; CView:OnLButtonUp(nFlags, point);5、界面设计(“类型”菜单)(“颜色”菜单)(“线性”菜单)(“线宽”菜单)(“填充”菜单)(“橡皮”菜单)6、系统测试三、小组成员分工说明独立完成四、课程设计总结或结论1 课程设计过程中出现的技术难点和解决方法:解决根据用户的不同选择来构造不同的画笔和画刷。可以把创建画笔和画刷所需要的参数定义成相应的变量,用户的选择来改变某个参数所关联的变量的值,如创建画笔需要“画笔的类型”、“画笔的宽度”、“画笔的颜色”就可以创建三个变量:stylewidthcolor来分别表示,这样就可以在绘制图形之前用这三个变量来创建画笔了。从而实现绘制不同的图形边框。2 课程设计期间的主要收获:对 GDI工具的使用有了跟深刻的理解,对实现图形的绘制掌握了一定的基础。3 对今后课程设计的建议提供一些有利的参考资料,以便在遇到问题时可以尽快解决。五、参考文献 1 梁兴柱,王建一,龚丹,林玉娥.Visual C+.NET程序设计.清华大学出版社六、指导教师评阅意见附录(其他必要资料)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1