ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:313.77KB ,
资源ID:326039      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-326039.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简易绘图程序 使用API和MFCWord格式文档下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

简易绘图程序 使用API和MFCWord格式文档下载.docx

1、绘制圆弧线Polybezir:绘制弯曲线b) 区域绘图函数Rectant:绘制矩形Roundrect:绘制圆边矩形Ellips:绘制椭圆Pie:绘制扇形2)自由绘图:拖动鼠标可以自由绘制曲线,可以通过一个对话框选择所需线形线宽等。3)清空功能:1) 全部清空:可以清空整个屏幕内容。2. 系统设计 2.1 系统总体框架API: MFC:2.2 系统详细设计2.2.1 模块划分图及描述a) 绘图函数模块:通过各种系统自带的绘图函数,直接调用绘图。设置他们的位置,并添加到菜单项,使点击菜单项则可出现相应图形。b) 自由绘图模块:按下鼠标左键,初始化起始位置,在选定自由绘图模式的情况下,拖动鼠标的同时

2、,获取鼠标当前位置为终点位置,调用MoveTo和LineTo函数连接两点。连线完成后,将上一条直线的终点作为下一次连线的起始位置。反复进行该操作,直到鼠标左键不再处于按下状态。当连线的频率足够快时,所画出的图形能近似于曲线,就能实现自由绘图。更改画笔线宽、线形:设置一个对话框,分别定义两个成员变量储存用户选择的现款和线形,再用一个整形变量,在每次绘图前,声明一个CPen类型的画笔对象,并用储存的颜色和线宽对该对象进行初始化,随后把该画笔选入设备描述表中。c) 窗口图形模块:通过在资源视图中设置菜单栏,将菜单栏设置成绘图函数、设置、清空(等板块;并默认为自由线画图,分别定关联函数和变量来记录做出

3、的选择。2.2.2类关系图及描述本程序主要在视图类中进行操作,原有类主要是CDrawView类有更改,其他类都由系统生成,未做很大更改。另外,新定义了一个Csettingdlg类来存储线宽和线形的设置。名称属性备注m_ptOrgin成员变量记录画图起点m_ptEnd记录画图终点m_color记录画笔和画刷颜色m_width记录画笔线宽m_SolidBrush判断是否选择实心画刷m_pBrush存储画图时使用的画刷LDown判断鼠标左键是否按下OnLine( )成员函数绘图函数中选择“直线”选项响应函数OnRectangle( )绘图函数中选择“矩形”选项响应函数OnEllipse( )绘图函数

4、中选择“椭圆”选项响应函数Onpie( )绘图函数中选择“扇形”选项响应函数OnLButtonDown( )绘图模式中鼠标左键按下响应函数OnLButtonUp( )鼠标左键弹起响应函数Onquanbuqingkong( )选择“清除屏幕”选项响应函数OnMouseMove( )鼠标移动响应函数Onxiantiao ( )储存选择的线条宽度和线条形状2.2.3程序流程图及描述2.3 关键算法分析函数一:/窗口函数LRESULTCALLBACK WndProc(HWNDhwnd, UINTmessage, WPARAMwParam, LPARAMlParam) staticint menuId=

5、0;/静态变量 int wmId, wmEvent; HDC hdc; PAINTSTRUCT ps; switch(message) caseWM_CREATE: SetTimer(hwnd,1,1000,NULL); break; caseWM_TIMER: InvalidateRect(hwnd,NULL,TRUE); break; caseWM_COMMAND:/处理菜单消息 wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); switch (wmId) case IDM_FIG1: menuId=IDM_FIG1; InvalidateR

6、ect(hwnd,NULL,TRUE);/实现会动的时钟 case IDM_FIG2: menuId=IDM_FIG2; /实现三角形的绘制 case IDM_EXIT:DestroyWindow(hwnd); /实现退出程序功能 break; caseWM_PAINT: hdc = BeginPaint(hwnd, &ps); if (menuId) cwin.open(hwnd, hdc); switch(menuId) caseIDM_FIG1:mclock(); caseIDM_FIG2: DrawTriangle(hwnd,hdc);break; / 其它绘图程序 break; En

7、dPaint(hwnd, & caseWM_DESTROY: KillTimer(hwnd,1);/销毁计时器 PostQuitMessage(0); default: /缺省时采用系统消息缺省处理函数 returnDefWindowProc(hwnd,message,wParam,lParam); return(0);函数二:会动的时钟void mclock() Shape *pShape; cwinSetColor(RGB(255,255,255); / 白色,设置表芯点的颜色 Circle clkPlate(org,radius);clkPlate;SetColor(RGB(0,255,

8、255); / 蓝色,设置表盘圆周颜色c5 double x,y,x_s,y_s,x_m,y_m,x_h,y_h; int i; for(i=0;iSetColor(RGB(255,255,255); cwin structtm local; time_t t; / 获取系统日历时间 t=time(NULL); / 将日历时间转化为本地时间 localtime_s(&local,&t); x_s=0.89*radius*sin(PI*(local.tm_sec)/30); /秒针 y_s=0.89*radius*cos(PI*(local.tm_sec)/30); x_m=0.7*radius

9、*sin(PI*(local.tm_min)/30); /分针 y_m=0.7*radius*cos(PI*(local.tm_min)/30); x_h=0.5*radius*sin(PI*(local.tm_hour)/6); /时针 y_h=0.5*radius*cos(PI*(local.tm_hour)/6); /* 画表针*/ Point hEnd(x_h,y_h),mEnd(x_m,y_m),sEnd(x_s,y_s); Line hLine(org,hEnd),mLine(org,mEnd),sLine(org,sEnd); hLine.SetColor(RGB(255,0,0

10、); / 红色 mLine.SetColor(RGB(0,255,0); / 绿色 sLine.SetColor(RGB(255,255,0); / 黄色hLinemLinesLine函数三:画三角形void DrawTriangle(HWNDhwnd,HDChdc) / 获得客户区域 RECT r; GetClientRect(hwnd, &r); / 设置映像模式 SetMapMode (hdc, MM_ISOTROPIC); / 设置窗口坐标范围 SetWindowExtEx(hdc, 100, 100, NULL); / 设置视口坐标范围 SetViewportExtEx(hdc, r

11、.right, r.bottom, NULL); / 绘制三角形 Point p=Point(10,10),Point(10,19),Point(22,19); MoveToEx( hdc, p0.get_x(), p0.get_y(), NULL); for( int i=0; iAddLine(m_ptOrigin, point);/加入线段到指针数组 CClientDC dc(this); CPen pen(m_nLineStyle, m_nLineWidth, RGB(0, 0, 0); dc.SelectObject(&pen); dc.MoveTo(m_ptOrigin); dc.

12、LineTo(point); m_ptOrigin = point;函数七:清空函数OnDrawInvalidate() this-Invalidate();函数八:设置对话框CSettingDlg:CSettingDlg(CWnd* pParent /*=NULL*/) CDialogEx(CSettingDlg:IDD, pParent) , m_nLineWidth(0) , m_nLineStyle(0)3.程序运行结果分析图一:图二 三角形绘制图三 菜单图四:绘图函数展示图五:自由线画图展示设置功能4.总结4.1课题的难点和关键点难点:课题的难点在于使用了对Windows的编程,使用

13、到了大量的类,使用了全新的工具MFC。VC是C+语言,是一种面向对象的编程语言。他于基础语言不同点在于,基础语言是一条路走到底的(中断技术除外),而面向对象是等待你的指令才往下走,是被动的编程语言。关键点:vc+是Windows平台上的C+编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。4.2本课题的评价本课题很有意思,初次接触式充满了意思。设计以及编写时需要查大量的资料,丰富了我们的知识;编写时极容易遇到困难,增加了我们的耐心;最关键的还是学到了很多有用的关于VC的方法技巧。便于我们在今后的学习中将MFC作为一种基本而优良的工具。4.3心得体会对于WINDOWS编程很游泳而且有意思,我们要好好学习,在以后的运用中才能熟能生巧。3. 参考文献1Visual C+6.0XXX2基于MFC设计建议画图板 包头师范学校论文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2