欢迎来到天天文库
浏览记录
ID:38519460
大小:214.50 KB
页数:11页
时间:2019-06-14
《北邮程序设计实践——画图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、北京邮电大学信息与通信工程学院程序设计实践设计报告课题名称:实验一画图程序第11页北京邮电大学信息与通信工程学院课题概述1.1课题目标和主要内容1.1.1主要内容和目标:A.基本功能界面中使用鼠标画点、圆、线等功能(使用菜单选择画什么即可)设置颜色(使用菜单设定几种颜色即可)保存,打开bmp文件选做功能保存,打开自定义格式文件图像二值化、平滑、连通域标记等B.目标对windows程序编程有一个初步的认识,对其消息处理体制有初步理解,掌握编程工具如vs的调试方法,熟练使用1.1.2编译环境:visualstudio20121.2系统的主要功能功能列表或功能框图,以及功能的简要说明
2、。第11页北京邮电大学信息与通信工程学院2.系统设计2.1系统总体框架包括系统框架图或层次逻辑图,设计思想等winmain.cpp:系统消息的获得与处理Graphicwindow.h:类的定义Graphicwindow.cpp:类中函数的定义fig.rc、resource.h:完成菜单的添加ccc_shap.h、ccc_shape.cpp完成图形类的定义test.h:实现画图函数的声明第11页北京邮电大学信息与通信工程学院test.cpp:实现画图函数的声明2.2系统详细设计[1]类关系图及描述[2]程序流程图及描述winmain.cpp对接收到的消息进行处理,进而根据消息调用
3、相应类函数,类函数中真正画图函数的实现在test.cpp中[3]存储结构、内存分配定义了全局栈vector1,对鼠标移动中的坐标点进行记录定义全局point类型,对鼠标左键up和down时的坐标点进行记录以下均为全局变量:intWIDTH=3,RORTR=1;//WIDTH方便改变线条粗细,RORTR判断是输出圆还是椭圆第11页北京邮电大学信息与通信工程学院Pointendot,bedot;//分别记录终点和起点,用于画直线、圆、椭圆、长方形COLORREFmmcolor=RGB(0,0,0);//线条颜色COLORREFficolor=RGB(0,0,0);//填充颜色2.3
4、关键算法分析算法一:caseWM_MOUSEMOVE://记录鼠标移动过程的点{intx=LOWORD(lParam);inty=HIWORD(lParam);if((wParam&MK_LBUTTON)){//鼠标在移动过程中按着LBUTTON和SHIFT键logoutput("鼠标在移动过程中按着LBUTTON和SHIFT键");vector1.push_back(Point(x,y));}}InvalidateRect(hwnd,NULL,TRUE);break;根据系统以及定义好的消息—WM_MOUSEMOVE,每当鼠标移动变回收到这个消息,进而将鼠标轨迹中的点压入栈中
5、算法二:caseWM_LBUTTONDOWN://记录起点{intx=LOWORD(lParam);inty=HIWORD(lParam);bedot=Point(x,y);}获得按下鼠标左键时的点,以便在画直线、圆、椭圆时应用相似的可以利用WM_LBUTTONUP消息获得算法三:voidmydot(GraphicWindow&cwin)//画点{externCOLORREFmmcolor;for(inti=0;i6、_x(x.get_x()),cwin.disp_to_user_y(x.get_y()));x1.SetColor(mmcolor);cwin<7、n.disp_to_user_y(be.get_y()));if(i+1
6、_x(x.get_x()),cwin.disp_to_user_y(x.get_y()));x1.SetColor(mmcolor);cwin<7、n.disp_to_user_y(be.get_y()));if(i+1
7、n.disp_to_user_y(be.get_y()));if(i+1
此文档下载收益归作者所有