第11章(119)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
图形设计在计算机应用领域占有很重要的地位,它广 泛应用于计算机辅助设计、计算机辅助制造、医学等领域, 即使是软件本身也越来越多地以图形界面进行人机交互。 各种微机上的C语言都提供了图形处理功能,事实上,各 自的标准库函数中大部分是图形处理函数。不同的C编译 系统,图形功能可能有些差别,相同功能所用的库函数名 也可能不一样,但它们的处理方法基本上是一致的。本章 以Turbo C 2.0作为工作环境,介绍图形程序的设计。
17
11.2 文本模式下的图形处理
在文本模式下,Turbo C提供了一系列屏幕处理函数, 这些函数包含在头文件“conio.h”中。
18
11.2.1 文本模式设置
文本模式的设置可以通过函数textmode()来实现。该函 数的使用格式如下:
textmode(int mode); 其中:参数mode是将要设置的文本模式,可以取的参 数值如表11.1所示。
7
4. MCGA
MCGA的功能与CGA相似,它和CGA部分兼容,但有 些功能又和VGA类似,它有640 × 480像素的2色模式。
8
5. IBM8514
IBM8514适配器有较强的图形功能,最高分辨率可达 1024 × 768像素,有256种颜色。
9
6. EGAMONO
EGAMONO(单色适配器)是一种640 × 350像素单色 显示模式。
34
例11.1 显示彩色文本。
#include <stdio.h> #include <conio.h>
/*将文本模式处理函数头文件包 含进来*/
main()
{ char str[80]="彩色文字"; textmode(C80); textcolor(YELLOW); textbackground(CYAN);
其中:参数color是将要设置的颜色,可使用的参数值 为表11.2中的前8种(即数值为0~7)。
25
3. 文本属性设置
文本颜色设置函数textattr()可用于设置文本的属性, 包括前景色、背景色,以及字符显示时是否闪烁、是否加 亮。该函数使用格式如下:
textattr(int attr);
其中:参数attr使用一个字节来描述文本的属性,各位 的含义如图11.3所示。
/*用于设置文本为高亮显示*/ /*用于设置文本为低亮显示*/ /*用于设置文本为正常亮度*/
29
11.2.3 文本输出
文本窗口是文本模式下在屏幕上定义的一个矩形区域, 在文本窗口定义后,如果要在屏幕上显示文本信息,将只 显示在这个窗口中,而不能输出到窗口以外的区域。默认 情况下,窗口就是整个屏幕。
参数color是将要设置的颜色,可以取的参数值如表 11.2所示。
22
表11.2 屏 幕 颜 色 表
颜色常量 BLACK BLUE GREEN CYAN
RED MAGENTA
BROWN LIGHTGRAY DARKGRAY
数值 0 1 2 3 4 5 6 7 8
含义 黑色 蓝色 绿色 青色 红色 洋红色 棕色 浅灰色 深灰色
19
文本模式名称 BW40 C40 BW80 C80 MONO
LASTMODE
表11.1 文 本 模 式
文本模式代码 0 1 2 3 7 -1
坐标行列数 40 ×25(40 列 25 行) 40 ×25(40 列 25 行) 80 ×25(80 列 25 行) 80 ×25(80 列 25 行) 80 ×25(80 列 25 行)
上一次的行列数
颜色模式 黑白 彩色 黑白 彩色 单色
上一次的颜色模式
20
在使用函数textmode()时,参数mode可以是文本模式 名,也可以是文本模式代码。例如,下面的程序代码都是 设置文本模式为彩色、40 × 25。
textmode(1); textmode(C40);
21
11.2.2 颜色设置
第11章* 图 形 设 计
11.1 图形处理基本概念 11.2 文本模式下的图形处理 11.3 图形模式下的图形处理 习题11
1
本章学习要求:
1. 了解图形处理的基本概念,了解文本模式、图形模 式,理解图形模式的
定义。 2. 掌握文本模式下颜色的设置、文本的输出、文本图 形处理,掌握图形系统初始化,绘图函数的使用,图形动 画设计。
textcolor(GREEN); textcolor(2);
上面的两行语句都可以设置文本的前景色为绿色。
24
2. 文本背景颜色设置
除了可以设置文件的前景色外,还可以设置文本的背 景色,文本的背景色由函数textbackground()来设置。该函 数使用格式如下:
textbackground(int color);
这三个函数的功能相当于printf()、puts()和putchar(), 用法也相同,只是它们以窗口作为输出对象,而不是全屏 幕。
32
3. 屏幕清除
在图形绘制中经常需要将屏幕或窗口中原来的输出清 除掉,为此,Turbo C提供了文本方式下对屏幕进行清除的 函数,分别如下:
clrscr(); clreol(); delline();
在缺省方式下,Turbo C规定屏幕坐标为每屏80列25行, 屏幕的左上角为第1行第1列,右下角为第25行第80列,如 图11.1所示。
11
图11.1 文本模式坐标系统
12
在Turbo C中除了缺省的80列25行显示方式外,还提供 了其他文本显示方式(见后面的表11.1)。
在文本模式下,可以显示各种字符,可以控制字符的 色彩、亮度和背景色等。Turbo C中还提供了很多在文本模 式下进行屏幕处理的函数,这些函数在使用时需要包含头 文件“conio.h”。
其他Turbo C支持的适配器及其显示模式参见后面的表 11.3。
10
11.1.2 文本模式
文本模式是显示文本字符的一种显示方式,它显示的 是字符,而在图形模式下,显示的是像素。
在文本模式下绘图时需要对显示字符的位置进行定位, 这种定位是由坐标系统来决定的,由于是文本显示模式, 要控制字符的位置就可以用字符显示时的行、列为设置坐 标的单位。
26
图11.3 文本属性字节的含义
27
从图中可以看出,低4位(0~3位)用来设置字符显示的 颜色(前景色),对应取的颜色值为0~15;第4~6位用于设 置背景色;最高位设置显示出的字符是否闪烁。
设置文本属性时,可以通过位运算来控制颜色设置到 字节的具体位。例如,下面的语句将设置黄色背景下的红 色字符:
/*设置背景色*/
clrscr(); cprintf("\n%s\n",str);
5
2. EGA
EGA是一种增强图形适配器,它除了能支持CGA的4 种显示模式外, Turbo C中支持两种分辨率:一种是低分 辨率方式(EGALO),分辨率为640×200像素的16色显示方 式;另一种是高分辨率显示方式(EGAHI),分辨率为 640×350像素的16色显示方式。
6
3. VGA
textattr(RED+(YELLOW<<4));
下面的语句将设置白色背景下的绿色闪烁字符:
textattr(GREEN+BLINK+(WHITE<<4));
28
4. 文本亮度设置
Turbo C中提供了三个设置文本亮度的函数,分别如下:
highvideo(); lowvideo(); normvideo();
VGA是目前流行的显示标准,称为视频图形阵列适配 器,它支持CGA、EGA的所有显示方式,同时还有 640 × 480像素的高分辨率显示方式(VGAHI),还支持 640 × 350像素的中分辨率显示方式(VGAMED)和 620 × 200像素的低分辨率显示方式(VGALO),它们均可 达到16种显示颜色。
颜色常量 LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA
YELLOW WHITE BLINK
数值 9 10 11 12 13 14 15 16
含义 淡蓝色 淡绿色 淡青色 浅红色 淡洋红色 黄色 白色 闪烁
23
可以使用颜色常量或数值来设置文本颜色,例如:
30
1. 文本窗口的设置
使用window()函数可以将全屏幕窗口设置成指定大小 的窗口。其使用格式如下:
window(int left,int top,int right,int bottom);
其中:(left,top)是窗口左上角的坐标,而(right,bottom) 是窗口右下角的坐标。
一旦窗口定义好,前面的textcolor()、textbackground() 和textattr()函数将只对窗口有效,窗口以外的区域不受影 响。
/*设置文本模式*/ /*设置文本颜色*/ /*设置背景色*/
Байду номын сангаас
clrscr();
35
window(5,1,20,4); textcolor(RED);
/*设置窗口*/ /*设置文本颜色*/
clrscr(); cprintf("\n%s\n",str);
/*输出字符串*/
window(25,1,40,4); textbackground(BLUE);
CGA是PC/XT等微机配置的彩色图形适配器,它可以 显示单色或彩色字符和图形。
在图形方式下,Turbo C支持两种分辨率:一种是高分 辨率方式(CGAHI),这种方式分辨率可达640 × 200像素, 达到这种最高分辨率时,背景色是黑色(也可以重新设置), 前景色可以选择一种(也只能选择一种),因此图形只显示 两种色彩(即前景色和背景色);另一种是中分辨率显示方 式,这种方式分辨率可达320 × 200像素,其背景色和前 景色均可由用户选择,但仅能显示4种颜色。因此,可以 有4种颜色模式供选择,即CGAC0、CGAC1、CGAC2和 CGAC3,主要区别是显示的4种颜色不同。
14
图11.2 图形屏幕坐标系统
15
在程序设计中使用像素时,必须先初始化屏幕,其中 必须指定图形模式,Turbo C中使用到的图形模式参见后面 的表11.3。
16
11.1.4 设计图形程序的步骤
利用C语言设计的图形程序,通常具有以下程序框架: (1) 确定图形显示方式,即图形模式的初始化。 (2) 设置屏幕的背景色和前景色等属性。 (3) 利用图形函数,在规定的坐标位置上画图形或写 文字。 (4) 在一些封闭的图形区域填充颜色。 (5) 关闭图形的显示方式。
3
11.1 图形处理基本概念
11.1.1 图形处理与显示适配器
计算机中的图形显示都需经过显示适配器(又称显卡) 的处理才能输出到显示器上,显示适配器在图形处理中有 着重要的作用。由于显示适配器的不同,所支持的图形模 式也不同,下面介绍一下Turbo C 2.0所支持的显示适配器 类型。
4
1. CGA
31
2. 文本的输出
以前我们学过的printf()、puts()和putchar()等函数都是 以全屏幕为窗口进行输出的,如果要以自定义的窗口为输 出对象,则需要使用文本窗口下的输出函数,它们分别是:
cprintf(char *format,表达式表列); cputs(char *str); putch(int ch);
13
11.1.3 图形模式
在图形模式下,显示的基本单位是像素,像素作为图 形处理的基本单位,在屏幕上显示为一个点(又称像素点)。 屏幕上像素的数目就是我们常说的屏幕分辨率,分辨率的 高低取决于显示适配器、显示器和屏幕显示模式。
显示图形时,也可以通过屏幕坐标系统来决定像素点 的位置,在屏幕坐标系统中,以左上角为坐标原点,x轴 向右,y轴向下,原点坐标为(0,0),如图11.2所示。如: (310,195)表示第310列第195行处像素的坐标。
在文本模式下,如果使用了彩色的文本模式,就可以 设置输出时的文本颜色及背景颜色,这些设置可以由相应 的函数完成。
1. 文本颜色设置
文本颜色可以由函数textcolor()来设置。该函数的功能 是:设置显示文本的前景色,也就是字符的颜色。该函数 使用格式如下:
textcolor(int color);
clrscr()函数将整个窗口或屏幕中的文本全部清除,并 将光标移到窗口/屏幕左上角,如果在执行该函数前设置过 文本颜色、背景颜色或文本属性,则清屏后这些设置将生 效。
33
clreol()函数将当前文本从光标位置开始到本行结束的 所有字符都清除,但不改变光标位置。
delline()函数将清除光标所在行的所有字符。
图形设计在计算机应用领域占有很重要的地位,它广 泛应用于计算机辅助设计、计算机辅助制造、医学等领域, 即使是软件本身也越来越多地以图形界面进行人机交互。 各种微机上的C语言都提供了图形处理功能,事实上,各 自的标准库函数中大部分是图形处理函数。不同的C编译 系统,图形功能可能有些差别,相同功能所用的库函数名 也可能不一样,但它们的处理方法基本上是一致的。本章 以Turbo C 2.0作为工作环境,介绍图形程序的设计。
17
11.2 文本模式下的图形处理
在文本模式下,Turbo C提供了一系列屏幕处理函数, 这些函数包含在头文件“conio.h”中。
18
11.2.1 文本模式设置
文本模式的设置可以通过函数textmode()来实现。该函 数的使用格式如下:
textmode(int mode); 其中:参数mode是将要设置的文本模式,可以取的参 数值如表11.1所示。
7
4. MCGA
MCGA的功能与CGA相似,它和CGA部分兼容,但有 些功能又和VGA类似,它有640 × 480像素的2色模式。
8
5. IBM8514
IBM8514适配器有较强的图形功能,最高分辨率可达 1024 × 768像素,有256种颜色。
9
6. EGAMONO
EGAMONO(单色适配器)是一种640 × 350像素单色 显示模式。
34
例11.1 显示彩色文本。
#include <stdio.h> #include <conio.h>
/*将文本模式处理函数头文件包 含进来*/
main()
{ char str[80]="彩色文字"; textmode(C80); textcolor(YELLOW); textbackground(CYAN);
其中:参数color是将要设置的颜色,可使用的参数值 为表11.2中的前8种(即数值为0~7)。
25
3. 文本属性设置
文本颜色设置函数textattr()可用于设置文本的属性, 包括前景色、背景色,以及字符显示时是否闪烁、是否加 亮。该函数使用格式如下:
textattr(int attr);
其中:参数attr使用一个字节来描述文本的属性,各位 的含义如图11.3所示。
/*用于设置文本为高亮显示*/ /*用于设置文本为低亮显示*/ /*用于设置文本为正常亮度*/
29
11.2.3 文本输出
文本窗口是文本模式下在屏幕上定义的一个矩形区域, 在文本窗口定义后,如果要在屏幕上显示文本信息,将只 显示在这个窗口中,而不能输出到窗口以外的区域。默认 情况下,窗口就是整个屏幕。
参数color是将要设置的颜色,可以取的参数值如表 11.2所示。
22
表11.2 屏 幕 颜 色 表
颜色常量 BLACK BLUE GREEN CYAN
RED MAGENTA
BROWN LIGHTGRAY DARKGRAY
数值 0 1 2 3 4 5 6 7 8
含义 黑色 蓝色 绿色 青色 红色 洋红色 棕色 浅灰色 深灰色
19
文本模式名称 BW40 C40 BW80 C80 MONO
LASTMODE
表11.1 文 本 模 式
文本模式代码 0 1 2 3 7 -1
坐标行列数 40 ×25(40 列 25 行) 40 ×25(40 列 25 行) 80 ×25(80 列 25 行) 80 ×25(80 列 25 行) 80 ×25(80 列 25 行)
上一次的行列数
颜色模式 黑白 彩色 黑白 彩色 单色
上一次的颜色模式
20
在使用函数textmode()时,参数mode可以是文本模式 名,也可以是文本模式代码。例如,下面的程序代码都是 设置文本模式为彩色、40 × 25。
textmode(1); textmode(C40);
21
11.2.2 颜色设置
第11章* 图 形 设 计
11.1 图形处理基本概念 11.2 文本模式下的图形处理 11.3 图形模式下的图形处理 习题11
1
本章学习要求:
1. 了解图形处理的基本概念,了解文本模式、图形模 式,理解图形模式的
定义。 2. 掌握文本模式下颜色的设置、文本的输出、文本图 形处理,掌握图形系统初始化,绘图函数的使用,图形动 画设计。
textcolor(GREEN); textcolor(2);
上面的两行语句都可以设置文本的前景色为绿色。
24
2. 文本背景颜色设置
除了可以设置文件的前景色外,还可以设置文本的背 景色,文本的背景色由函数textbackground()来设置。该函 数使用格式如下:
textbackground(int color);
这三个函数的功能相当于printf()、puts()和putchar(), 用法也相同,只是它们以窗口作为输出对象,而不是全屏 幕。
32
3. 屏幕清除
在图形绘制中经常需要将屏幕或窗口中原来的输出清 除掉,为此,Turbo C提供了文本方式下对屏幕进行清除的 函数,分别如下:
clrscr(); clreol(); delline();
在缺省方式下,Turbo C规定屏幕坐标为每屏80列25行, 屏幕的左上角为第1行第1列,右下角为第25行第80列,如 图11.1所示。
11
图11.1 文本模式坐标系统
12
在Turbo C中除了缺省的80列25行显示方式外,还提供 了其他文本显示方式(见后面的表11.1)。
在文本模式下,可以显示各种字符,可以控制字符的 色彩、亮度和背景色等。Turbo C中还提供了很多在文本模 式下进行屏幕处理的函数,这些函数在使用时需要包含头 文件“conio.h”。
其他Turbo C支持的适配器及其显示模式参见后面的表 11.3。
10
11.1.2 文本模式
文本模式是显示文本字符的一种显示方式,它显示的 是字符,而在图形模式下,显示的是像素。
在文本模式下绘图时需要对显示字符的位置进行定位, 这种定位是由坐标系统来决定的,由于是文本显示模式, 要控制字符的位置就可以用字符显示时的行、列为设置坐 标的单位。
26
图11.3 文本属性字节的含义
27
从图中可以看出,低4位(0~3位)用来设置字符显示的 颜色(前景色),对应取的颜色值为0~15;第4~6位用于设 置背景色;最高位设置显示出的字符是否闪烁。
设置文本属性时,可以通过位运算来控制颜色设置到 字节的具体位。例如,下面的语句将设置黄色背景下的红 色字符:
/*设置背景色*/
clrscr(); cprintf("\n%s\n",str);
5
2. EGA
EGA是一种增强图形适配器,它除了能支持CGA的4 种显示模式外, Turbo C中支持两种分辨率:一种是低分 辨率方式(EGALO),分辨率为640×200像素的16色显示方 式;另一种是高分辨率显示方式(EGAHI),分辨率为 640×350像素的16色显示方式。
6
3. VGA
textattr(RED+(YELLOW<<4));
下面的语句将设置白色背景下的绿色闪烁字符:
textattr(GREEN+BLINK+(WHITE<<4));
28
4. 文本亮度设置
Turbo C中提供了三个设置文本亮度的函数,分别如下:
highvideo(); lowvideo(); normvideo();
VGA是目前流行的显示标准,称为视频图形阵列适配 器,它支持CGA、EGA的所有显示方式,同时还有 640 × 480像素的高分辨率显示方式(VGAHI),还支持 640 × 350像素的中分辨率显示方式(VGAMED)和 620 × 200像素的低分辨率显示方式(VGALO),它们均可 达到16种显示颜色。
颜色常量 LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA
YELLOW WHITE BLINK
数值 9 10 11 12 13 14 15 16
含义 淡蓝色 淡绿色 淡青色 浅红色 淡洋红色 黄色 白色 闪烁
23
可以使用颜色常量或数值来设置文本颜色,例如:
30
1. 文本窗口的设置
使用window()函数可以将全屏幕窗口设置成指定大小 的窗口。其使用格式如下:
window(int left,int top,int right,int bottom);
其中:(left,top)是窗口左上角的坐标,而(right,bottom) 是窗口右下角的坐标。
一旦窗口定义好,前面的textcolor()、textbackground() 和textattr()函数将只对窗口有效,窗口以外的区域不受影 响。
/*设置文本模式*/ /*设置文本颜色*/ /*设置背景色*/
Байду номын сангаас
clrscr();
35
window(5,1,20,4); textcolor(RED);
/*设置窗口*/ /*设置文本颜色*/
clrscr(); cprintf("\n%s\n",str);
/*输出字符串*/
window(25,1,40,4); textbackground(BLUE);
CGA是PC/XT等微机配置的彩色图形适配器,它可以 显示单色或彩色字符和图形。
在图形方式下,Turbo C支持两种分辨率:一种是高分 辨率方式(CGAHI),这种方式分辨率可达640 × 200像素, 达到这种最高分辨率时,背景色是黑色(也可以重新设置), 前景色可以选择一种(也只能选择一种),因此图形只显示 两种色彩(即前景色和背景色);另一种是中分辨率显示方 式,这种方式分辨率可达320 × 200像素,其背景色和前 景色均可由用户选择,但仅能显示4种颜色。因此,可以 有4种颜色模式供选择,即CGAC0、CGAC1、CGAC2和 CGAC3,主要区别是显示的4种颜色不同。
14
图11.2 图形屏幕坐标系统
15
在程序设计中使用像素时,必须先初始化屏幕,其中 必须指定图形模式,Turbo C中使用到的图形模式参见后面 的表11.3。
16
11.1.4 设计图形程序的步骤
利用C语言设计的图形程序,通常具有以下程序框架: (1) 确定图形显示方式,即图形模式的初始化。 (2) 设置屏幕的背景色和前景色等属性。 (3) 利用图形函数,在规定的坐标位置上画图形或写 文字。 (4) 在一些封闭的图形区域填充颜色。 (5) 关闭图形的显示方式。
3
11.1 图形处理基本概念
11.1.1 图形处理与显示适配器
计算机中的图形显示都需经过显示适配器(又称显卡) 的处理才能输出到显示器上,显示适配器在图形处理中有 着重要的作用。由于显示适配器的不同,所支持的图形模 式也不同,下面介绍一下Turbo C 2.0所支持的显示适配器 类型。
4
1. CGA
31
2. 文本的输出
以前我们学过的printf()、puts()和putchar()等函数都是 以全屏幕为窗口进行输出的,如果要以自定义的窗口为输 出对象,则需要使用文本窗口下的输出函数,它们分别是:
cprintf(char *format,表达式表列); cputs(char *str); putch(int ch);
13
11.1.3 图形模式
在图形模式下,显示的基本单位是像素,像素作为图 形处理的基本单位,在屏幕上显示为一个点(又称像素点)。 屏幕上像素的数目就是我们常说的屏幕分辨率,分辨率的 高低取决于显示适配器、显示器和屏幕显示模式。
显示图形时,也可以通过屏幕坐标系统来决定像素点 的位置,在屏幕坐标系统中,以左上角为坐标原点,x轴 向右,y轴向下,原点坐标为(0,0),如图11.2所示。如: (310,195)表示第310列第195行处像素的坐标。
在文本模式下,如果使用了彩色的文本模式,就可以 设置输出时的文本颜色及背景颜色,这些设置可以由相应 的函数完成。
1. 文本颜色设置
文本颜色可以由函数textcolor()来设置。该函数的功能 是:设置显示文本的前景色,也就是字符的颜色。该函数 使用格式如下:
textcolor(int color);
clrscr()函数将整个窗口或屏幕中的文本全部清除,并 将光标移到窗口/屏幕左上角,如果在执行该函数前设置过 文本颜色、背景颜色或文本属性,则清屏后这些设置将生 效。
33
clreol()函数将当前文本从光标位置开始到本行结束的 所有字符都清除,但不改变光标位置。
delline()函数将清除光标所在行的所有字符。