欢迎来到天天文库
浏览记录
ID:14391051
大小:322.18 KB
页数:16页
时间:2018-07-28
《简易绘图程序 使用api和mfc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、XXX大学程序设计实践报告课题名称:程序设计实践学生姓名:XXXXXxxxxx班级:2012XXXXX班内序号:XXX学号:XXxx21XXX日期:2014年5月1.课题概述1.1课题目标和主要内容本课题了实现一个基于API和MFC的简易绘图软件。此简易绘图软件,满足用户进行绘图时的基本需求,主要功能包括绘制会动的时钟,绘制三角形(API实现),绘制线条(MFC实现)。应具有良好的界面、必要的交互信息和简易的菜单进行操作。在程序的设计与实现中,系统开发平台为Windows7,主要工具为VisualStudio
2、2012。1.2系统的主要功能主要功能与说明:DROW1(API):1)会动的时钟的绘制:模拟一个真实的表盘,绘制图形,显示实际的时间。2)绘制简单的三角形;MFC:1)图形的绘制:a)线形绘图函数:Lineto:绘制直线Polyline:绘制折线Arc:绘制圆弧线Polybezir:绘制弯曲线b)区域绘图函数Rectant:绘制矩形Roundrect:绘制圆边矩形Ellips:绘制椭圆Pie:绘制扇形2)自由绘图:拖动鼠标可以自由绘制曲线,可以通过一个对话框选择所需线形线宽等。3)清空功能:1)全部清空:可
3、以清空整个屏幕内容。2.系统设计2.1系统总体框架API:简易画图板时钟三角形退出MFC:2.2系统详细设计2.2.1模块划分图及描述简易绘图程序窗口图形模块自由画笔模块绘图函数模块a)绘图函数模块:通过各种系统自带的绘图函数,直接调用绘图。设置他们的位置,并添加到菜单项,使点击菜单项则可出现相应图形。Lineto:绘制直线Polyline:绘制折线Arc:绘制圆弧线Polybezir:绘制弯曲线Rectant:绘制矩形Roundrect:绘制圆边矩形Ellips:绘制椭圆Pie:绘制扇形b)自由绘图模块:按
4、下鼠标左键,初始化起始位置,在选定自由绘图模式的情况下,拖动鼠标的同时,获取鼠标当前位置为终点位置,调用MoveTo和LineTo函数连接两点。连线完成后,将上一条直线的终点作为下一次连线的起始位置。反复进行该操作,直到鼠标左键不再处于按下状态。当连线的频率足够快时,所画出的图形能近似于曲线,就能实现自由绘图。更改画笔线宽、线形:设置一个对话框,分别定义两个成员变量储存用户选择的现款和线形,再用一个整形变量,在每次绘图前,声明一个CPen类型的画笔对象,并用储存的颜色和线宽对该对象进行初始化,随后把该画笔选入
5、设备描述表中。c)窗口图形模块:通过在资源视图中设置菜单栏,将菜单栏设置成绘图函数、设置、清空(等板块;并默认为自由线画图,分别定关联函数和变量来记录做出的选择。2.2.2类关系图及描述简易绘图程序CsetDLgCMydrawviewCMydrwAppCmainframCaboutDlgCmydrawDoc本程序主要在视图类中进行操作,原有类主要是CDrawView类有更改,其他类都由系统生成,未做很大更改。另外,新定义了一个Csettingdlg类来存储线宽和线形的设置。名称属性备注m_ptOrgin成员变
6、量记录画图起点m_ptEnd成员变量记录画图终点m_color成员变量记录画笔和画刷颜色m_width成员变量记录画笔线宽m_SolidBrush成员变量判断是否选择实心画刷m_pBrush成员变量存储画图时使用的画刷LDown成员变量判断鼠标左键是否按下OnLine()成员函数绘图函数中选择“直线”选项响应函数OnRectangle()成员函数绘图函数中选择“矩形”选项响应函数OnEllipse()成员函数绘图函数中选择“椭圆”选项响应函数Onpie()成员函数绘图函数中选择“扇形”选项响应函数OnLBut
7、tonDown()成员函数绘图模式中鼠标左键按下响应函数OnLButtonUp()成员函数鼠标左键弹起响应函数Onquanbuqingkong()成员函数选择“清除屏幕”选项响应函数OnMouseMove()成员函数鼠标移动响应函数Onxiantiao()成员函数储存选择的线条宽度和线条形状2.2.3程序流程图及描述2.3关键算法分析API:函数一://窗口函数LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam){stat
8、icintmenuId=0;//静态变量intwmId,wmEvent;HDChdc;PAINTSTRUCTps;switch(message){caseWM_CREATE:SetTimer(hwnd,1,1000,NULL);break;caseWM_TIMER:InvalidateRect(hwnd,NULL,TRUE);break;caseWM_COMMAND://处理菜单消息wmId=LOW
此文档下载收益归作者所有