⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 图形处理.htm

📁 大家 看看 多多关注
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                              <P>二、窗口内文本的输入函数 <BR>  int getche(void); 
                              该函数在前面已经讲过,需要说明的是,getche()函数从键盘上获得一个字符,在屏幕上显示的时候,如果字符超过了窗口右边界,则会被自动转移到下一行的开始位置。<BR>下面这个程序给上例中加入了一些文本的输出函数。<BR>#include 
                              <STDIO.H><BR>#include <CONIO.H><BR>int 
                              main()<BR>{<BR>int i;<BR>char *c[]={"BLACK", 
                              "BLUE", "GREEN", "CYAN", "RED",<BR>"MAGENTA", 
                              "BROWN", "LIGHTGRAY"};<BR>textbackground(0); /* 
                              设置屏幕背景色 */<BR>clrscr(); /* 清除文本屏幕 */<BR>for(i=1; 
                              i&lt;8; 
                              i++)<BR>{<BR>window(10+i*5,5+i,30+i*5,15+i); /* 
                              定义文本窗口 */<BR>textbackground(i); /* 定义窗口背景色 
                              */<BR>clrscr(); /* 清除窗口 
                              */<BR>}<BR>getch();<BR>return 
                              0;<BR>}<BR>有关屏幕操作的函数<BR>  void clrscr(void); 
                              清除当前窗口中的文本内容, 并把光标定位在窗口的左上角(1, 1)处。 void 
                              clreol(void); 清除当前窗口中从光<BR>标位置到行尾的所有字符, 光标位置不变。 
                              void gotoxy(x, y); 该函数很有用, 
                              它用来定位光标在当前窗口中的位置。这里x,y是指光标要<BR>定位处的坐标(相对于窗口而言),当x,y超出了窗口的大小时,该函数就不起作用了。<BR>  int 
                              gettext(int xl,int yl,int x2,int y2,void 
                              *buffer);<BR>  int puttext(int x1,int y1,int 
                              x2,int y2,void 
                              *buffer);<BR>gettext()函数是将屏幕上指定的矩形区域内文本内容存入buffer 
                              指针指向的一个内存空间。内存的大小用下式计算: 
                              所用字节大小=行数*列<BR>数*2。其中:<BR>  行数=y2-y1+1 列数=x2-x1+1 
                              puttext()函数则是将gettext()函数存入内存buffer中的文字内容拷贝到屏幕上指定的位置。<BR>  int 
                              movetext(int x1, int x2, int y2, int x3, int y3); 
                              movetext()函数将屏幕上左上角为(x1, y1),右下角为(x2, 
                              y2)的一矩形窗口内的文本内容拷贝到左上角为(x3, 
                              y3)的新的位置。该函数的坐标也是相对于整个屏幕而言的。<BR>注意:<BR>  1. 
                              gettext()函数和puttext() 函数中的坐标是对整个屏幕而言的, 
                              即是屏幕的绝对坐标,而不是相对窗口的坐标。<BR>  2. 
                              movetext()函数是拷贝而不是移动窗口区域内容, 即使用该函数后, 
                              原位置区域的文本内容仍然存在。<BR>#include<CONIO.H><BR>main()<BR>{<BR>int 
                              i;<BR>char *f[]={"Load F3","Pick Alt-F3","New 
                              ",<BR>"Save F2","Write to 
                              ","Directory",<BR>"Change dir","Os shell ","Quit 
                              Alt-X"};<BR>char 
                              buf[11*16*2];<BR>clrscr();<BR>textcolor(YELLOW);<BR>textbackground(BLUE);<BR>clrscr();<BR>gettext(10, 
                              2, 24, 11, buf);<BR>window(10, 2, 24, 
                              11);<BR>textbackground(RED);<BR>textcolor(YELLOW);<BR>clrscr();<BR>for(i=0; 
                              i&lt;9; i++)<BR>{<BR>gotoxy(1, 
                              i+1);<BR>cprintf("%s", 
                              f[i]);<BR>}<BR>getch();<BR>movetext(10, 2, 24, 11, 
                              40, 10);<BR>puttext(10, 2, 24, 11, 
                              buf);<BR>getch();<BR>}<BR>下面再介绍一些函数:<BR>  void 
                              highvideo(void); 设置显示器高亮度显示字符<BR>  void 
                              lowvideo(void); 设置显示器低亮度显示字符<BR>  void 
                              normvideo(void); 使显示器返回到程序运行前的显示方式<BR>  int 
                              wherex(void); 这两个函数返回当前窗口下光标的x,y坐标<BR>  int 
                              wherey(void); Turbo C 
                              提供了非常丰富的图形函数,所有图形函数的原型均在graphics. h 
                              中,本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外,使用图形函数时要确保有显示器图形驱动程序*BGI,同时将集成开发环境Options/Linker中的Graphics 
                              lib选为on,只有这样才能保证正确使用图形函数。图形模式的初始化不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。设置屏幕为图形模式,可用下列图形初始化函数:<BR>  void 
                              far initgraph(int far *gdriver, int far 
                              *gmode,char 
                              *path);<BR>  其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见下表。<BR>  图形驱动程序由Turbo 
                              C出版商提供,文件扩展名为.BGI。 根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、 
                              VGA 图形适配器就调用驱动程序EGAVGA.BGI。 <BR>图形驱动器、模式的符号常数及数值 
                              <BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<BR>图形驱动器(gdriver) 
                              图形模式(gmode)<BR>───────────────────── 色调 
                              分辨率<BR>符号常数 数值 符号常数 
                              数值<BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<BR>CGA 1 
                              CGAC0 0 C0 320*200<BR>CGAC1 1 C1 320*200<BR>CGAC2 
                              2 C2 320*200<BR>CGAC3 3 C3 320*200<BR>CGAHI 4 2色 
                              640*200<BR>──────────────────────────────<BR>MCGA 
                              2 MCGAC0 0 C0 320*200<BR>MCGAC1 1 C1 
                              320*200<BR>MCGAC2 2 C2 320*200<BR>MCGAC3 3 C3 
                              320*200<BR>MCGAMED 4 2色 640*200<BR>MCGAHI 5 2色 
                              640*480<BR>──────────────────────────────<BR>EGA 3 
                              EGALO 0 16色 640*200<BR>EGAHI 1 16色 
                              640*350<BR>──────────────────────────────<BR>EGA64 
                              4 EGA64LO 0 16色 640*200<BR>EGA64HI 1 4色 
                              640*350<BR>──────────────────────────────<BR>EGAMON 
                              5 EGAMONHI 0 2色 
                              640*350<BR>──────────────────────────────<BR>IBM8514 
                              6 IBM8514LO 0 256色 640*480<BR>IBM8514HI 1 256色 
                              1024*768<BR>──────────────────────────────<BR>HERC 
                              7 HERCMONOHI 0 2色 
                              720*348<BR>──────────────────────────────<BR>ATT400 
                              8 ATT400C0 0 C0 320*200<BR>ATT400C1 1 C1 
                              320*200<BR>ATT400C2 2 C2 320*200<BR>ATT400C3 3 C3 
                              320*200<BR>ATT400MED 4 2色 320*200<BR>ATT400HI 5 2色 
                              320*200<BR>──────────────────────────────<BR>VGA 9 
                              VGALO 0 16色 640*200<BR>VGAMED 1 16色 
                              640*350<BR>VGAHI 2 16色 
                              640*480<BR>──────────────────────────────<BR>PC3270 
                              10 PC3270HI 0 2色 
                              720*350<BR>──────────────────────────────<BR>DETECT 
                              0 
                              用于硬件测试<BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<BR>使用图形初始化函数设置VGA高分辨率图形模式#include 
                              <GRAPHICS.H><BR>int main()<BR>{<BR>int gdriver, 
                              gmode;<BR>gdriver=VGA;<BR>gmode=VGAHI;<BR>initgraph(&amp;gdriver, 
                              &amp;gmode, "c:\\caic\\bgi");<BR>bar3d(100, 100, 
                              300, 250, 50, 1); 
                              /*画一长方体*/<BR>getch();<BR>closegraph();<BR>return 
                              0;<BR>}<BR>  有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序用于不同图形驱动器,Turbo 
                              C 提供了一个自动检测显示器硬件的函数,其调用格式为: void far 
                              detectgraph(int *gdriver, *gmode); 
                              其中gdriver和gmode的意义与上面相同。 自动进行硬件测试后进行图形初始化#include 
                              <GRAPHICS.H><BR>int main()<BR>{<BR>int gdriver, 
                              gmode;<BR>detectgraph(&amp;gdriver, &amp;gmode); 
                              /*自动测试硬件*/<BR>printf("the graphics driver is %d, 
                              mode is %d\n",<BR>gdriver,gmode); 
                              /*输出测试结果*/<BR>getch();<BR>initgraph(&amp;gdriver, 
                              &amp;gmode, "c:\\caic\\bgi");<BR>/* 
                              根据测试结果初始化图形*/<BR>bar3d(10, 10, 130, 250, 20, 
                              1);<BR>getch();<BR>closegraph();<BR>return 
                              0;<BR>}<BR>  上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但Turbo 
                              C提供了一种更简单的方法, 即用driver=DETECT 
                              语句后再跟initgraph()函数就行了。采用这种方法后,上例可改为:<BR>#include 
                              <GRAPHICS.H><BR>int main()<BR>{<BR>int 
                              gdriver=DETECT, gmode;<BR>initgraph(&amp;gdriver, 
                              &amp;gmode, "c:\\caic\\bgi");<BR>bar3d(50, 50, 
                              150, 30, 50, 
                              1);<BR>getch();<BR>closegraph();<BR>return 
                              0;<BR>}<BR>  另外,Turbo C 
                              提供了退出图形状态的函数closegraph(),其调用格式为: void far 
                              closegraph(void); 调用该函数后可退出图形状态而进入文本方式( Turbo C 
                              默认方式),并释放用于保存图形驱动程序和字体的系统内存。独立图形运行程序的建立Turbo 
                              C对于用initgraph()函数直接进行的图形初始化程序,在编译和链接时并没有将相应的驱动程序(*.BGI) 
                              装入到执行程序,当程序进行到intitgraph()语句时,再从该函数中第三个形式参数char 
                              *path中所规定的路径中去找相应的驱动程序。若没有驱动程序,则在C:\TC中去找,如C:\TC中仍没有或TC不存在,将会出现错误:<BR>BGI 
                              Error: Graphics not initialized (use 'initgraph') 
                              <BR>  因此,为了使用方便,应该建立一个不需要驱动程序就能独立运行的可执行图形程序,Turbo 
                              C中规定用下述步骤(这里以EGA、VGA显示器为例):<BR>  1. 
                              在C:\TC子目录下输入命令:BGIOBJ 
                              EGAVGA此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。<BR>  2. 
                              在C:\TC子目录下输入命令:TLIB 
                              LIB\GRAPHICS.LIB+EGAVGA此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文<BR>件中。<BR>  3. 
                              在程序中initgraph()函数调用之前加上一句: 
                              registerbgidriver(EGAVGA_driver):该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。<BR>  经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。假设已作了前两个步骤,若再向例6中加registerbgidriver()函数则变成:<BR>#include<STDIO.H><BR>#include<GRAPHICS.H><BR>int 
                              main()<BR>{<BR>int 
                              gdriver=DETECT,gmode;<BR>registerbgidriver(EGAVGA_driver);<BR>/*建立独立图形运行程序 
                              */<BR>initgraph(gdriver, 
                              gmode,"c:\\caic\\bgi");<BR>bar3d(50,50,250,150,20,1);<BR>getch();<BR>closegraph();<BR>return 
                              0;<BR>}<BR>  上例编译链接后产生的执行程序可独立运行。如不初始化成EGA或CGA分辨率,而想初始化为CGA分辨率, 
                              则只需要将上述步骤中有EGAVGA的地方用CGA代替即可。屏幕颜色的设置和清屏函数对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。<BR>  在Turbo 
                              C中分别用下面两个函数。 设置背景色: void far setbkcolor(int 
                              color); 设置作图色: void far setcolor(int color); 
                              其中color 
                              为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜色的符号常数及数值见下表所示。<BR>有关屏幕颜色的符号常数表:<BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<BR>符号常数 
                              数值 含义 符号常数 数值 
                              含义<BR>──────────────────────────────<BR>BLACK 0 黑色 
                              DARKGRAY 8 深灰<BR>BLUE 1 兰色 LIGHTBLUE 9 深兰<BR>GREEN 
                              2 绿色 LIGHTGREEN 10 淡绿<BR>CYAN 3 青色 LIGHTCYAN 11 
                              淡青<BR>RED 4 红色 LIGHTRED 12 淡红<BR>MAGENTA 5 洋红 
                              LIGHTMAGENTA 13 淡洋红<BR>BROWN 6 棕色 YELLOW 14 
                              黄色<BR>LIGHTGRAY 7 淡灰 WHITE 15 
                              白色<BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<BR>  对于CGA适配器,背景色可以为表3中16种颜色的一种,但前景色<BR>依赖于不同的调色板。共有四种调色板,每种调色板上有四种颜色可<BR>供选择。不同调色板所对应的原色见下表:</P>
                              <P>CGA调色板与颜色值表:<BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
                              <BR>调色板 
                              颜色值<BR>──────────────────────────────<BR>符号常数 数值 0 
                              1 2 3<BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<BR>C0 0 背景 
                              绿 红 黄<BR>C1 1 背景 青 洋红 白<BR>C2 2 背景 淡绿 淡红 黄<BR>C3 3 
                              背景 淡青 淡洋红 
                              白<BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<BR>  清除图形屏幕内容使用清屏函数,其调用格式如下: 
                              voide far cleardevice(void); 
                              有关颜色设置、清屏函数的使用请看例8。#include<STDIO.H><BR>#include<GRAPHICS.H><BR>int 
                              main()<BR>{<BR>int gdriver, gmode, 
                              i;<BR>gdriver=DETECT;<BR>initgraph(&amp;gdriver, 
                              &amp;gmode, "c:\\caic\\bgi"); 
                              /*图形初始化*/<BR>setbkcolor(0); 
                              /*设置图形背景*/<BR>cleardevice();<BR>for(i=0; i&lt;=15; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -