用C语言编写屏幕保护程序

2005年5月第11卷第2期安庆师范学院学报(自然科学版)JournalofAnqingTeachersCollege(NaturalScience)May.2005Vol.11NO.ΞΞΞ用C语言编写屏幕保护程序胡则辉,范容(杭州师范学院信息工程学院,浙江杭州310018)摘要:图形程序是计算机程序中很重要的内容,我们可以利用C语言中的图形函数编写出风格迥异的屏保程序。本文通过具体程序,介绍了用C语言编写屏幕保护程序的基本思路和方法。关键词:C语言;屏幕保护程序;编程;输出:TP312文献标识码:A:1007-4260(2005)02-0016-04C语言是世界上应用最广泛的几种语言之一,应用C语言可以对数学问题求解或实现其它应用编程。屏幕保护程序可以用C语言来实现,通过编写自己喜爱的屏幕保护程序可以加深对C语言的了解,同时可以提高编程者应用编程语言解决实际问题的能力,培养编程者敏锐的观察力和极强的创造力。基本理论1TurboC提供了非常丰富的图形函数1,我们使用这些图形处理函数可以实现各种图形功能,所有的图形函数的原型均在Graphics.h中。可以利用这些函数来实现图形模式的初始化,从而建立独立的图形程序。屏幕保护程序一般都是一些简单的动画,我们可以利用C语言中的随机函数和延时函数来实现动态效果。下面我们简要介绍一下编写屏幕保护程序中常用的几个函数:(1)在屏幕作图之前,我们必须根据显示适配器的种类将显示器设置成为某种图形模式,设置屏幕为图形模式,可以用下列图形初始化函数:Voidinitgraph(intfar3driver,intfar3driver,charfar3path);其中driver和mode分别表示图形驱动器和模式,path是指图形驱动器所在的目录路径。(2)有时我们并不知道所用的图形显示器适配器的类型,或者需要将编写的屏保程序用于不同的图形驱动器,我们必须对显示器硬件作自动检测,TurboC中提供了自动检测显示器硬件的函数,其调用格式为:Voiddetectgraph(int3driver,int3mode);为了实现此功能,TC中还提供了一种更简单的方法,就是用driver=DETECT语句后再跟initgraph()函数就可以了。(3)为了获得丰富多彩的视觉效果我们需要对屏幕颜色进行设置,图形模式下常用的屏幕颜色设置函数有:Setbkcolor()函数:该函数用来设置图形屏幕的背景颜色,其原型为:Voidsetbkcolor(intcolor)Setcolor()函数:该函数用来设置作图颜色。其原型为:Voidsetcolor(intcolor)收稿日期:2004-12-27作者简介:胡则辉(1979-),男,浙江杭州人,杭州师范学院计算机教育专业研究生。ΞΞΞ2实例实现步骤2.1满天星当程序运行后,会看到屏幕上随机地画出五颜六彩的小圆点,按任意键退出程序。(效果见图1)图1实例1效果图图2实例2的输出设计思想:本例是一个综合性的实例,主要讲解动画的制作,用while循环控制按任意键结束,利用随机函数产生点的颜色并将随机函数作为画圆的参数与延时函数配套使用,得到较迷幻的动画效果。简单步骤:1)图形初始化2:initgraph(gdriver,gmode,”c:\\tc3\\bgi”);2)设置不同颜色在不同的地方画圆:setcolor(random(255));ƒ3设置随机颜色3ƒcircle(random(900),random(500),random(3));ƒ3delay(10);ƒ3延时10毫秒3ƒ3)源代码与注释:随机地画不同的圆3ƒƒ3满天星3ƒ####include<graphics.h>include<stdlib.h>include<conio.h>include<dos.h>ƒ3定义库函数3ƒvoidmain(){intgd=DETECT,gm,i;ƒ3自动检测3ƒinitgraph(gd,gm,"c:\\tc3\\bgi");while(!kbhit()){for(i=0;i<=600;i++)ƒ3图形初始化3ƒsetcolor(random(255));ƒ3设置颜色3ƒcircle(random(900),random(500),random(3));ƒ3画圆3ƒdelay(10);}cleardevice();delay(5);}}2.2空中彩带ƒ3延迟10毫秒3ƒƒ3清除屏幕3ƒ当程序运行后,会看到一个小块在屏幕上不断地旋转,每次都留下不同颜色的轨迹,就如空中的一·18·安庆师范学院学报(自然科学版)2005年条彩色丝带。(见图2)设计思想:由于这个动画有动态和静止两面部分,首先用for循环绘制静止图像做为背景,然后绘制动态部分。为了完成这一过程我们需要调用如下三个函数:Unsignedfarimagesize(intx1,inty1,intx2,inty2);Voidfargetimage(intx1,inty1,intx2,inty2,voidfar3mapbuf);Voidfarputimage(intx,inty,void3mapbuf,intop);函数imagesize():测试左上角为(x1,y1)右上角为(x2,y2)的图形屏幕...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?