



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2 0 0 5 年 5 月第 11 卷第 2 期安庆师范学院学报 (自然科学版)J o u rna l o f A nq ing Te a c he rs C o lle g e (N a tu ra l S c ie nc e )M a y. 2 0 0 5V o l. 11 NO. 2用C语言编写屏幕保护程序胡则辉 , 范容(杭州师范学院 信息工程学院, 浙江 杭州 310018)摘要: 图形程序是计算机程序中很重要的内容, 我们可以利用C 语言中的图形函数编写出风格迥异的屏保程序。 本文通过具体程序, 介绍了用C 语言编写屏幕保护程序的基本思路和方法。关键词: C 语言; 屏幕保护程序; 编程; 输出中图分类号: T P 312文献标识码: A文章编号: 1007- 4260 (2005) 02- 0016- 04C 语言是世界上应用最广泛的几种语言之一, 应用C 语言可以对数学问题求解或实现其它应用编程。屏幕保护程序可以用C 语言来实现, 通过编写自己喜爱的屏幕保护程序可以加深对C 语言的了解,同时可以提高编程者应用编程语言解决实际问题的能力, 培养编程者敏锐的观察力和极强的创造力。基本理论1T u rbo C 提供了非常丰富的图形函数1, 我们使用这些图形处理函数可以实现各种图形功能, 所有的图形函数的原型均在 G rap h ic s. h 中。 可以利用这些函数来实现图形模式的初始化, 从而建立独立的图形程序。屏幕保护程序一般都是一些简单的动画, 我们可以利用C 语言中的随机函数和延时函数来实现动 态效果。 下面我们简要介绍一下编写屏幕保护程序中常用的几个函数:( 1) 在屏幕作图之前, 我们必须根据显示适配器的种类将显示器设置成为某种图形模式, 设置屏幕 为图形模式, 可以用下列图形初始化函数:V o id in itg rap h ( in t fa r 3 d r ive r, in t fa r 3 d r ive r, ch a r fa r 3 p a th ) ; 其中 d r ive r 和m o de 分别表示图 形驱动器和模式, p a th 是指图形驱动器所在的目录路径。( 2) 有时我们并不知道所用的图形显示器适配器的类型, 或者需要将编写的屏保程序用于不同的图形驱动器, 我们必须对显示器硬件作自动检测, T u rbo C 中提供了自动检测显示器硬件的函数, 其调 用格式为: V o id de tec tg rap h ( in t 3 d r ive r, in t 3 m o de) ; 为了实现此功能, T C 中还提供了一种更简单的 方法, 就是用 d r ive r= D E T EC T 语句后再跟 in itg rap h () 函数就可以了。( 3) 为了获得丰富多彩的视觉效果我们需要对屏幕颜色进行设置, 图形模式下常用的屏幕颜色设置函数有:Se tb k co lo r () 函数: 该函数用来设置图形屏幕的背景颜色, 其原型为: V o id se tb k co lo r ( in t co lo r) Se tco lo r () 函数: 该函数用来设置作图颜色。 其原型为: V o id se tco lo r ( in t co lo r)V o id c lea rdev ice (vo id) 函数: 清除屏幕内容函数。V o id de lay () 函数: 延时函数。收稿日期: 2004- 12- 27作者简介: 胡则辉 (1979- ) , 男, 浙江杭州人, 杭州师范学院计算机教育专业研究生。2实例实现步骤2. 1满天星当程序运行后, 会看到屏幕上随机地画出五颜六彩的小圆点, 按任意键退出程序。 (效果见图 1)图 1 实例 1 效果图图 2 实例 2 的输出设计思想: 本例是一个综合性的实例, 主要讲解动画的制作, 用w h ile 循环控制按任意键结束, 利用随机函数产生点的颜色并将随机函数作为画圆的参数与延时函数配套使用, 得到较迷幻的动画效果。简单步骤: 1) 图形初始化2 : in itg rap h (&gd r ive r, &gm o de, ”c: tc3 b g i”) ;2) 设置不同颜色在不同的地方画圆:se tco lo r ( ran dom (255) ) ; 3 设置随机颜色3 c irc le ( ran dom (900) , ran dom (500) , ran dom (3) ) ; 3de lay (10) ; 3 延时 10 毫秒3 3) 源代码与注释:随机地画不同的圆33 满天星3 #in c lu dein c lu dein c lu dein c lu de3 定义库函数3 vo id m a in ()in t gd= D E T EC T , gm , i;3 自动检测3 in itg rap h (&gd, &gm , c: tc3 b g i ) ;w h ile (! k b h it () )fo r ( i= 0; i = 600; i+ + )3 图形初始化3 se tco lo r ( ran dom (255) ) ;3 设置颜色3 c irc le ( ran dom (900) , ran dom (500) , ran dom (3) ) ;3 画圆3 de lay (10) ;c lea rdev ice () ;de lay (5) ;2. 2空中彩带3 延迟 10 毫秒3 3 清除屏幕3 当程序运行后, 会看到一个小块在屏幕上不断地旋转, 每次都留下不同颜色的轨迹, 就如空中的一18安庆师范学院学报 (自然科学版)2005 年条彩色丝带。 (见图 2)设计思想: 由于这个动画有动态和静止两面部分, 首先用 fo r 循环绘制静止图像做为背景, 然后绘 制动态部分。为了完成这一过程我们需要调用如下三个函数: U n sign ed fa r im age size ( in t x 1, in t y1, in tx 2, in t y2) ; V o id fa r ge t im age ( in t x 1, in t y1, in t x 2, in t y2, vo id fa r 3 m ap b u f) ; V o id fa r p u t im age ( in t x , in t y, vo id 3 m ap b u f, in t op ) ; 函数 im age size ( ) : 测试左上角为 (x 1, y1) 右上角为 (x 2, y2) 的图形屏幕 区域内的全部内容需要多少个字节, 然后再给 m ap b u f 分配一个所测数字节内存空间的指针。 函数 ge t im age () : 将上面区域内的图像保存在内存中。函数p u t im age () : 将图像输出到左上角为点 (x , y) 的位 置上。 简单步骤:1) 自动检测, 并初始化图形模式。In t gd= D E T EC T , gm ;In itg rap h (&gd, &gm , ”c: tc3 b g i”) ;2) 用 fo r 循环画一些彩色小点作背景。fo r ( in t h = 0; h 6000; h + + ) se tco lo r ( ran dom (255) ) ;c irc le ( ran dom (640) , ran dom (580) , ran dom (1) ) ;3) 利用 fo r 循环语句来完成动画。fo r (f= 0; f 5. 783 4; f= f+ 0. 0086) se tco lo r ( ran dom (f+ 200) ) ;p u t im age (308+ ( sin (f) + f3 co s (f) ) 3 13, 53 (co s (f) - f3 sin (f) ) + 200, ho u r, CO P Y PU T ) ;p u t im age (308+ ( sin (f) +if (k b h it () ) b reak;de lay (5) ;4) 源代码与注释:(f) 3co s (f) ) 3 13, 53 (co s (f) -f3sin (f) ) + 200, ho u r, CO P Y PU T ) ;#in c lu dein c lu de in c lu de in c lu de in c lu de in c lu dein c lu de3 空中彩带3 3 定义库函数3 vo id m a in ()vo id 3 ho u r;in t gd= D E T EC T , gm ;f lo a t f;in itg rap h (&gd, &gm , c: tc3 b g i ) ;w h ile (! k b h it () )se tac t ivep age (1) ;se tco lo r ( ran dom (255) ) ;3 按任意键退出3 3 选择激活页3 3 设置前景色3 se tf illsty le ( ran dom (25) , ran dom (255) ) ;f ille llip se (9, 12, 13, 16) ;3 设置着模式3 ho u r= m a llo c ( im age size (0, 0, ran dom (20) , 20) ) ;ge t im age (0, 0, 20, 20, ho u r) ;ran dom ize () ;se tac t ivep age (0) ;fo r ( in t h = 0; h 6000; h + + ) se tco lo r ( ran dom (255) ) ;3 画彩色小点作背景3 c irc le ( ran dom (640) , ran dom (580) , ran dom (1) ) ;fo r (f= 0; f 5. 783 4; f= f+ 0. 0086) se tco lo r ( ran dom (f+ 200) ) ;p u t im age (308+ ( sin (f) + f3 co s (f) ) 33 完成动画3 13, 53(co s (f) - f3 sin (f) ) + 200, ho u r, CO P Y PU T ) ;p u t im age (308+ ( sin (f) +if (k b h it () ) b reak;de lay (5) ;c lea rdev ice () ;de lay (30) ;(f) 3co s (f) ) 3 13, 53 (co s (f) - f3 sin (f) ) + 200, ho u r, CO P Y PU T ) ;建立可独立运行的可执行屏幕保护程序3T u rbo C 中对于使用 in itg rap h () 函数直接进行图形初始化程序。 在编译和连接并没有将相关驱动程序 ( * B G I) 装入到程序中, 而是当程序运行到 in itg rap h ( ) 语句时, 再从此函数中第三个形参 ch a r 3p a th 中所规定的路径中去找相应的驱动程序, 由于每台电脑中相关驱动程序 ( * B G I) 所在位置不同或T C 不存在将导致屏幕保护程序不能直接在其它电脑上运行。为了提高屏幕保护程序的移植性, 应建立一个不需要驱动程序就可以独立运行的可执行屏幕保护程序, 为此我们需要做到以下几步:1) 在你的 T C 子目录下输入命令: B G IOBJE GA V GA2) 然后在 T C 子目录下输入命令: TL IB L IB GRA PH IC S. L IB + E GA V GA3) 在程序中 in itg rap h () 函数调用前面加上: reg iste rb g id r ive r (E GA V A G d r ive r) ;经过上面三步处理后, 编译连接后的屏幕保护程序就可以在任何目录或其它兼容机上运行了。 参 考 文 献 123王明富. C 语言程序设计教程 M .北京: 高等教育出版社, 2004: 281- 287.夏宝岚. C 程序设计 M .上海: 华东理工大学出版社, 2002: 225- 254.刘加海. 高级语言程序设计 M . 杭州: 浙江大学出版社, 2002: 312- 313 .Screen Saver Programm in g in C L an guageHU Ze2h u i, FA N R o n g(T h e Schoo l o f Info rm a t io n E eng inee r ing, H angzho u T each e r s co llege , H angzho u 310018, C h ina)A bstrac t: T h e p a t te rn p ro g ram is a ve ry im po r tan t p a r t o f PC p ro g ram. W ith th e p a t te rn func t io n so f C languag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业管理中心安全防范管理方案
- 2025银行5分钟面试题及答案
- 小学数学思维训练课程设计纲要
- 企业员工离职率分析与留人对策
- 互联网金融风险管理及合规操作方案
- 中小企业财务风险管理建议
- 呼叫中心员工绩效考核标准
- 妇产科常见病护理诊断案例
- 教学设计范例:普罗米修斯第二课时
- 消防安全月度工作计划及实施步骤
- 公司财务知到智慧树章节测试课后答案2024年秋北京第二外国语学院
- 工厂交叉作业安全管理协议书(2篇)
- 中考英语完型填空常用短语
- 宣传物料技术服务方案设计
- 品管圈PDCA改善案例-产科联合多部门降低阴道分娩产后出血发生率
- 暴聋(突发性耳聋)中医临床路径及入院标准2020版
- 部编高教版2023·职业模块 中职语文 2.《宁夏闽宁镇:昔日干沙滩今日金沙滩》 课件
- 【MOOC】生命的教育-浙江大学 中国大学慕课MOOC答案
- 高血压个案护理案例
- 四川省三级综合医院评审标准实施细则(2023年版)
- 心肺复苏术课件2024新版
评论
0/150
提交评论