程序设计报告模板
程序设计实践
设
计
报
告
课题名称:__windows编程画图时钟______
学生姓名:__孙振超____________________
班 级:___2012211111_______________
班内序号:___24_______________________
学 号:___2012210326_______________
日 期:___2014_年_4_月_30 _号_______
1. 课题概述
1.1课题目标和主要内容
1. 熟悉在Visual studio 2010 环境下编辑、编译、调试和运行一个实际
窗口式应用程序的步骤和方法;
2. 能进行简单的windows 绘图程序设计;提高实际动手能力。
开发平台:windows32系统
主要工具:
Visual studio 2010
1.2系统的主要功能
windows 绘图程序设计
一. 画图
1. 画点: point()函数实现
2. 画直线: line()函数实现
3. 画矩形:
4. 画圆: rectangle()函数实现 circle()函数实现
5. 画椭圆: ellipse()函数实现
6. 画时钟: myclock()函数实现
二.bmp 文件处理
1. 打开bmp 文件 :open()函数实现;
2. 灰度处理: grey()函数实现;
3. 保存bmp 文件: save(HBITMAP hb, string &f) 函数实现
一. 画图功能
二.Bmp 文件处理功能
三. 菜单栏
时钟: 实现画方形时钟,功能
fig2: 实现自定义画图功能,一中的点,线等
Exit : 实现退出程序功能
打开文件: 打开本地*.bmp
另存为: 保存窗体中bmp 文件
灰度处理: 处理窗体中bmp 文件灰度
2. 系统设计
2.1 系统总体框架
系统框架图或层次逻辑图
设计思想
一.定义基类Shape ,为基本图类, 提供坐标,边框颜色及填充色信息,定义派
生类Point,Line,Circle,rectangle 设定相应参数,定义Message 接收消息
二.运用上述类,及句柄处理函数实现画图程序
三.处理BMP 文件
2.2 系统详细设计
[1] 模块划分图及描述
一.画图:
画笔宽度是通过成员整形变量width 控制,每一个宽度按钮对应不同的width
值。通过选择宽度按钮,即可选择不同的Width 值,创建画笔获得width 值后,就可画出不同的宽度。
调用相应类及函数实现画线,画点,矩形,椭圆等的功能。
2.3 关键算法分析
算法1:point()
[1] 算法功能
画点
[2] 算法基本思想
通过获取用户定义坐标,画笔宽度,颜色等信息实现画点功能
[3] 算法空间、时间复杂度分析
O(1)
[4] 代码逻辑(可用伪代码描述)
①.获取位置坐标
②.创建画笔信息并调用SelectObject()函数,把刚才创建的画笔
与绘图纸关联绘图
③.完成后删除画笔
注:画线line()功能思想类似,所以省略
算法2:ellipse(double x, double y, double ra, double rb,COLORREF
mColor,COLORREF fillColor)
[1] 算法功能
画椭圆
[2] 算法基本思想
通过获取用户定义坐标,画笔宽度,颜色等信息实现画椭圆功能,并填充颜色
[3] 算法空间、时间复杂度分析
O(n)
[4] 代码逻辑(可用伪代码描述)
①若填充色设置有效,则创建画刷并保存在oldbrush 中,
并通过SelectObject ()函数实现笔刷与绘图纸关联
②创建画笔并保存在oldpen 中,并通过SelectObject ()函数实
现笔刷与绘图纸关联
③画图操作和背景色填充操作
④删除画笔
算法3:_rectangle(double xfrom,double yfrom,double l,double ,COLORREF
mColor,COLORREF fillColor)
[1] 算法功能
画矩形
[2] 算法基本思想
通过获取用户定义坐标,画笔宽度,颜色等信息实现画矩形功能,并填充颜
色
[3] 算法空间、时间复杂度分析
O(1)
[4] 代码逻辑(可用伪代码描述)
①若填充色设置有效,则创建画刷并保存在oldbrush 中,并通过
SelectObject ()函数实现笔刷与绘图纸关联
②调用line ()函数画矩形四边,参数意义:(xfrom,yfrom)为矩形
中心点,l 为长,w 为宽
③背景色填充操作
算法4:getHBitmap()
[1] 算法功能
由窗口HDC 转向HBITMAP 消息
[2] 算法基本思想
通过建立内存和位图关系,使得句柄可处理位图
[3] 算法空间、时间复杂度分析
O(1)
[4] 代码逻辑(可用伪代码描述)
① 建立内存DC 和位图
② 获得内存DC 旧位图
③hdc 的内容写入到内存DC
④恢复内存DC 的旧位图,得到刚写入的hdc 内容
算法5:myOpen(HWND hwnd, HDC mainwin_hdc)
[1] 算法功能
打开bmp 文件至窗口
[2] 算法基本思想
通过将dc 位图放到内存dc ,通过处理内存dc ,即可实现对bmp 文件的处理
[3] 算法空间、时间复杂度分析
O(1)
[4] 代码逻辑(可用伪代码描述)
①获取窗口客户取坐标
②获得位图DC 并将dc 位图放到内存dc
③绘制内存背景
④清除现有的句柄消息
算法6:mpaint()
[1] 算法功能
画图,圆,椭圆,线,点
[2] 算法基本思想
调用已经定义好的椭圆,线,点函数,实现画图功能
[3] 算法空间、时间复杂度分析
O (1)
[4] 代码逻辑(可用伪代码描述)
①将窗体设为背景色,白色
②调用ellipse(-7.0,1.0,2.0,1.0,RGB(0,0,255),RGB(255,0,255));画椭
圆
③调用point ()函数画点
④调用 line(-20,0,-10,0,RGB(0,0,255))画线
⑤调用_rectangle(5,1,3,3,RGB(0,0,255),RGB(0,0,255))画矩形
算法7:open()
[1] 算法功能
打开bmp 文件
[2] 算法基本思想
通过句柄消息获取bmp 文件位置,大小等数据并打开相应bmp 文件
[3] 算法空间、时间复杂度分析
[4] 代码逻辑(可用伪代码描述)
①找到相应bmp 文件
②调用GetObject()函数,获得bitmap 信息到bmp 结构中
③调用GetBitmapBits()函数,将指定位图的位拷贝到缓冲区
算法8:grey()
[1] 算法功能
灰度处理
[2] 算法基本思想
通过句柄消息获取bmp 文件位置,大小等数据并打开相应bmp 文件
[3] 算法空间、时间复杂度分析
O(n)
[4] 代码逻辑(可用伪代码描述)
①找到相应bmp 文件
②调用GetObject()函数,获得bitmap 信息到bmp 结构中
③调用GetBitmapBits()函数,将指定位图的位拷贝到缓冲区
算法9:save()
[1] 算法功能
保存bmp 文件
[2] 算法基本思想
将文件保存至本地
[3] 算法空间、时间复杂度分析
O(n)
[4] 代码逻辑(可用伪代码描述)
①定义bmp 结构
②构建pbmi
③计算文件大小,获取位图信息
④写文件
算法10:myclock(GraphicWindows &cwin)
[1] 算法功能
画方形时钟
[2] 算法基本思想
[3] 算法空间、时间复杂度分析、
O(n)
[4] 代码逻辑(可用伪代码描述)
①存储秒和毫秒,调用_ftime()将日历时间转化为本地时间
②画表盘, 调用rectangle 类,设定长宽相等,背景色,边框色等值,画图 定义点类,画12个点
③画表针 ,句柄接收时针,分针,秒针不动点,实现时针,分针,秒针线段按时间正确顺序转动
程序运行结果分析
3. 总结
4.1课题的难点和关键点
由于以前并未接触windows 程序,运用是很不习惯,所以调试有困难。通过百度和询问同学老师,学到了很多相关知识,解决了编译中的错误。
3.2 本课题的评价
第11页
本课题切合实际,在学习能力范围内,是很好的课题。自己需要学的东西还有很多,对windows 变成只是初步了解,学到了一些调试程序的方法,会继续歇息相关知识,完善程序。如没有设定笔擦功能,可以尝试用背景色为白色,以鼠标选择笔擦功能为条件进行实现。
4.3心得体会
1.Windows 应用程序包括入口函数WinMain 和窗口函数WndProc 。
2. 绘图工具使用的一般步骤
1. 获取Win 系统库存画笔/或创建画笔/刷
2. 将画笔/刷选入设备环境,使用函数:SelectObject(hdc,hP/hBr)。删除画笔/刷,使用函数:DeleteObject(hP/hBr)。
3..Windows 应用程序变化万千,但消息机制和窗口过程却是Windows 应用程序的基石和骨架,贯穿于所有windows 应用程序之中。
这次课程设计虽只是做了一个极其简单的绘图工具的制作,但也让我从设计者的角度看到了设计程序以及电脑软件工具的实质及难度,看似一个很简单的工具,其制作的背后工作是很大的,不光是图标,按钮的设置,程序的编写,代码的实现都是很精密且不容许一点错误的工作。平时我们使用的很顺手的一个小小工具,其开发的各项小号都不可小觑,由此,我们需要学的东西还太多太多。
4. 参考文献
[1]百度文库
第12页
相关文章
- 垃圾发电主厂房高支模施工方案
- 模板工程实训报告
- 建筑工程管理实习报告总结
- 土木工程(毕业)实习报告
- 中国建筑模板行业发展研究报告
- 模板支撑体系监理细则
- 工程档案管理规定模板
- 高大模板工程安全监理实施细则
- 运用底稿模板保证审计质量
- 20**年版混凝土结构工程施工质量验收规范GB50204
目 录 一.编制依据 . ........................................................... 1 二.工程概况 . .................................... ...
建筑工程技术模板实训 实习名称: 模板实训工程 指导教师: 刘 福 珍 实习学生:专业班级: 11建筑302班 所在小组学 号: [1**********]5 日 期: 汇总 模板实训报告 实训目的:通过一周是实训让我们对模板的概况.模板系 ...
建筑工程管理实习报告总结 通过这几年对建筑施工技术与其他课程的学习,我初步掌握了关于施工方面的知识,但是由于书本上的知识和实际运用上的差距,有些内容并不是理解的很透彻.同时,由于技术的快速发展,有些书本上的知识已经落后于生产实际,甚至已经被 ...
毕业实习报告 院: * * 学院 专业: 土木工程 班级: 学号: 学生姓名: 指导教师姓名: 实习日期: 2012年3月 作为一个土木工程专业毕业的本科生,毕业设计是大学阶段尤为重要的一个环节,它是对我们大学阶段所学知识的一次综合运用,不 ...
核心内容提要 市场规模(Market Size) 市场规模(Market Size),即市场容量,本报告里,指的是目标产品或行业的整体规模,通常用产值.产量.消费量.消费额等指标来体现市场规模.千讯咨询对市场规模的研究,不仅要对过去五年的市 ...
涞源县易地扶贫搬迁工程 (县城安置片区) 模板支撑体系监理细则 二〇一六年十月一日 一.编制依据 1.<建设工程监理规范>(GB/T50319-2013) 2.<建筑施工高处作业安全技术规范>(JGJ80-2011) ...
工程档案管理规定 编写部门: 编写日期: 更新日期: 文档编码: 文档版本: 技术服务中心 2012年02月10日 ---- 年-- 月 --日 0.1 XXXXXXXXX公司 文档控制 修改记录 审阅记录 分发记录 目录 文档控制 ... ...
广西壮族自治区地震局防震减灾基础设施 和紧急救援训练基地建设工程 高大模板工程安全监理实施细则 编制: 审批: 日期: 广西恒基建设工程咨询有限公司 2013年5月 广西恒基建设工程咨询有限公司 高大模板工程安全监理实施细则 目 录 一.工 ...
运用底稿模板 保证审计质量 作者:胡明才 来源:<经济研究导刊>2013年第17期 摘 要:随着社会主义市场经济的不断深化,人们对社会审计成果的运用,从审计鉴证的外部效用为主,逐步拓展到为自身经济业务进行诊断的过程.这种变化对于 ...
现批准<混凝土结构工程施工质量验收规范>GB50204-2002局部修订的条文,自2011年8月1日起实施.其中,第5.2.1.5.2.2条为强制性条文,必须严格执行.经此次修改的原条文同时废止. 5.2 原材料 主控项目 5. ...