资源预览内容
第1页 / 共95页
第2页 / 共95页
第3页 / 共95页
第4页 / 共95页
第5页 / 共95页
第6页 / 共95页
第7页 / 共95页
第8页 / 共95页
第9页 / 共95页
第10页 / 共95页
亲,该文档总共95页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C必看高级编程技术,屏幕文本输出 图形程序设计 硬件驱动 键盘鼠标输入方法编程 其它高级编程技术,一、屏幕文本输出,1.1文本方式的控制 1.2窗口设置和文本输出函数 1.3清屏和光标操作函数 1.4屏幕文本移动与存取函数 1.5状态查询函数,1.1.1 文本方式控制函数,文本方式就是显示文本的模式,它的显示单位是字符而不是图形方式下的象素,在屏幕上显示字符的位置坐标用行和列表示。 缺省方式下,每屏为80列25行,Turbo C规定屏的左上角为l行l列,屏的右下角为25行80列。 Turbo C支持的文本显示方式有5种,它们可以用文本显示方式设置函数来进行设置。,文本显示方式设置函数:void textmode(int newmode),其中newmode的值可分别为: 04025黑白显示 14025彩色显示 28025黑白显示 38025彩色显示 78025单色显示 -1上一次的显示方式,1.1.2 文本方式颜色控制函数,文本颜色设置函数void textcolor(int color)控制文本显示的前景色,即字符显示的颜色,其参数color仅能选择17种颜色,即值为016。 文本背景颜色设置函数void textbackground(int color)设置文本显示的背景颜色,其参数color仅能选择8种颜色,即值为07。 文本属性设置函数void textattr(int attr)设置字符显示的颜色,背景色,字符显示是否闪烁,显示属性参数attr可用一个字节即8位来描述。,1.1.3 字符显示亮度控制函数,void highvideo(void)用高亮度显示字符。 void lowvideo(void)用低亮度显示字符。 void normvideo(void)将设置通常亮度显示字符。,1.2 窗口设置和文本输出函数,在文本方式下,没进行窗口设置时,即窗口设置缺省时,认为整个屏幕为显示窗口, Turbo C提供了窗口设置函数window(),可由用户根据自己的需要来重新设定显示窗口。当设定后,以后的控制台I/O操作(即文本输入输出),就可均在此窗口中进行。,1.2.1 窗口设置函数,void window(int x1,int y1,int x2,int y2); 其中(x1,y1)为窗口的左上角坐标,(x2,yz)为窗口的右下角坐标,这些坐标是以整个屏幕为参考坐标系。 利用窗口函数可以在屏幕上定义多个不同窗口,以显示不同的信息。,1.2.2 控制台文本输出函数,printf(),putc(),puts(),putchar()和输出函数以整个屏幕为窗口的,它们不受由window设置的窗口限制,也无法用函数控制它们输出的位置。 Turbo C提供了三个文本输出函数, int cprintf(char *format,);int cputs(char *str);int putch(int ch);它们受窗口的控制,窗口内显示光标的位置,就是它开始输出的位置。,1.3.1 清屏函数,void clrscr(void);清除窗口中的文本,并将光标移到当前窗口的左上角,即(1, 1)处。 void clreol(void);除当前窗口中从光标位置开始到本行结尾的所有字符,但不改变光标原来的位置。 void delline(void);删除一行字符,该行是光标所在行。,1.3.2 光标操作函数,void gotoxy(int x,int y);把光标移到窗口内的(x,y)处,x,y坐标是相对窗口而言。它多和cprintf函数配合,以指定输出开始位置。,1.4.1 屏幕文本移动函数,void movetext(int x1,int y1,int x2,int y2,int x3,int y3); 该函数将把屏幕上左上角为(xl,y1),右下角为(x2,y2)的矩形内文本拷贝到左上角为(x3,y3)的一个新矩形区内。这里x,y坐标是以整个屏幕为窗口坐标系,即屏幕左上角为(1,1)。 该函数与开设的窗口无关,且原矩形区文本不变。,1.4.2 屏幕文本存取函数,1、存文本函数void gettext(int xl,int y1,int x2,int y2,void *buffer);把左上角为(xl,y1),右下角为(x2,y2)的矩形区内的文本存到由指针buffer指向的一个内存缓冲区内。 2、取文本函数void puttext(int x1,int y1,int x2,int y2,void *buffer);把由buffer指针指向的缓冲区内所存文本复制到屏幕上一矩形区内,该矩形区左上角为(x1,y1),右下角为(x2,y2)。,1.5 状态查询函数,void gettextinfo(struct text_info *f); 这里的text_info是在conio.h头文件中定义的一个结构; 显示当前屏幕的显示方式,当前窗口的坐标、当前光标的位置,文本的显示属性等。,第二章 图形程序设计,Turbo C为用户提供了一个功能很强的画图软件库,它又称为Borland图形接口(BGI),它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动程序(如CGA.BGI、EGAVGA.BGI等)。及一些字符集的字体驱动程序(如goth.chr黑体字符集等)。 编写图形程序时用到的一些图形库函数均在graphics.lib中,执行这些函数时,所需的有关信息(如宏定义等)则包含在graphics.h头文件中。,2.1.1 图形显示的坐标,显示器的屏幕如同一张坐标纸,在其上显示图形时,图形上任一点的位置均有确定的坐标,即可用x,y坐标值来表示。,2.1.2 象素,显示器显示的图形均由一些圆点组成(其亮度、颜色不同),这些点称为象素(或称象点),它们是组成图形的最小单位。 象素的大小可以通过设置不同的显示方式来改变。象素在屏幕上的位置则可由其所在的x,y坐标来决定。,2.2 图形显示器与适配器,计算机中要显示的字符和图形均以数字形式存储在存储器中,而显示器接收的应是模拟信号。 常用的显示器有三条模拟红绿兰颜色的模拟信号输入线,每条输入线的电压决定了颜色的亮度,只要能产生出可区分的电压来,它们不同的组合,便可使显示器显示出不同的颜色来。 插在PC微机插槽中的图形卡(即适配器),其作用就是将要显示的字符和图形以数字形式存储在卡上的视频存储器VRAM中,再将其变成视频模拟信号送往相应适配的显示器进行显示,也即适配器在计算机主机和显示器之间起到了信息转换和视频发送作用。 由于计算机配有的显示器种类不同,因而适配器种类不同,常用的几种适配器,1单色显示适配器(MDA);仅显示一种颜色,仅支持8025行的字符显示。 2彩色图形适配器(CGA);这是PC/XT等微机配用的显示器图形卡,它可以产生单色或彩色字符和图形。 3增强型图形适配器EGA);除支持CGA的四种显示模式外,还增加了分辨率为640200的16色显示方式, (EGAHI),也可显示16色。 4视频图形阵列适配器(VGA);它是目前流行的PC微机显示标准,它支持CGA,EGA的所有显示方式,但自己还有640480的高分辨显示方式(VGAHI)、640350的中分辨显示方式(VGAMED)和640200的低分辨显示方式(VGALO),它们均可有16种显示颜色可供选择。,常用的几种适配器,5TVGA;它是目前市面上最流行的PC 486,586微机配的显示器标准,在图形方式下,它可有640400,640480,800600,1024768及7681024等分辨率,可选颜色达256种,在文本方式下,可支持25、30、43、60行,132列的字符显示。它也兼容CGA、EGA、VGA的显示方式,由于Turbo C早于该产品出现,因而上述增强了的显示方式均不支持,但对于高级编程者,可通过对TVGA各专用寄存器直接编程来实现这些功能。,常用的几种适配器,6PVGA;它是paradise VGA的缩写,它由Western Digital公司生产,有的叫SVGA(香港Surperking公司生产的386微机上使用)。还有称为EVGA(Extended VGA),它们和PVGA在软硬件上均是兼容的。PVGA完全兼容CGA、EGA、VGA的所有工作方式,它还有自己一些特有的工作模式,与TVGA类似。 7XGA;XGA是IBM公司新推出的一种增强性图形适配器,它是VGA的换代产品,具有更高的分辨率和性能,它有和CGA,EGA,VGA全兼容的工作方式,但显示速度却比VGA快一倍。,常用的几种适配器,8CVGA;这是国内研制的带有显示汉字功能的VGA图形适配器,它带有汉字字库,该适配器提供了和CGA、EGA、VGA全兼容的工作方式,还提供了在文本工作方式下的高分辨图形显示功能。在它的ROM BIOS中提供了INT10H的功能号为30H38H的功能调用,因而提供了方便的汉字处理功能。,2.3 显示器工作方式,文本方式或称字符显示方式 图形显示方式 它们的主要差别是显示存储器(VRAM)中存的信息不同。字符方式时,VRAM存放要显示字符的ASCII码,用它作为地址,取出字符发生器ROM(固定存储器)中存放的相应字符的图象(又称字模),变成视频信号在显示器屏上进行显示。图形方式时,则要显示的图形的图象直接存在VRAM中,VRAM中某地址单元存放的数就表示了相应屏幕上某行和列上的象素及颜色。,Turbo C支持的适配器和图形模式,1MCGA(多色图形阵列);它和VGA是PS/2系列微机的主要适配器,MCGA功能上同CGA相似,它和CGA是部分兼容的,但有些功能又和VGA类似,可有640480的二色模式。 2IBM8514;该适配器可插入PS/2微机中,它有较强的图形功能,最高分辨率可达1024768,可有256种颜色。 3HERC;大力神公司生产的一种单色适配器,是PC系列微机早期的第三种显示标准(其它两种MDA和CGA),它采用720348高分辨单色显示模式。 4EGAMONO;EGA单色适配器,它只有一种640350单色显示模式。,2.5 图形系统的初始化,即要用什么类型的图形显示适配器的驱动程序, 采用什么模式的图形方式(也就是相应程序的入口地址), 适配器驱动程序的寻找路径名。 注意:所用系统的显示适配器一定要支持所选用的显示模式,否则将出错。,2.5.1 图形系统的初始化函数,void far initgraph(int far *driver,int far *mode,char far *path_for_driver);,2.5.2 图形系统检测函数,void far detectgraph(int far *graphdriver,int far *graphmode); 它完成对适配器的检查并得到显示器类型号和相应的最高分辨率模式,若所设适配器不是规定的那些类型,则返回-2,表示适配器不存在。,2.5.3 清屏函数,void far cleardevice(void);该函数作用范围为整个屏幕。 void far clearviewport(void);如果用函数setviewport定义一个图视窗口,则可用清除图视口函数,它仅清除图视口区域内的内容。,2.5.3恢复显示方式函数,当画图程序结束,回到文本方式时,要关闭图形系统,回到文本方式,用void far closegraph(void); 为了不关闭图形系统,使相应适配器的驱动程序和字符集(字库)仍驻留在内存,但又回到原来所设置的模式,则可用恢复工作模式函数void far restorecrtmode(void);它也同时进行清屏操作。该函数常和另一设置图形工作模式函数setgraphmode交互使用,使得显示器工作方式在图形和文本方式之间来回切换。,2.6 基本图形函数,图形由点、线、面组成,Turbo C提供了一些函数,以完成这些操作。,2.6.1 画点函数,void far p
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号