📄 王大刚--c语言编程宝典--图形函数.htm
字号:
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>
<P> 例4. 使用图形初始化函数设置VGA高分辨率图形模式
<BR> #include <graphics.h>
<BR> int main() <BR> {
<BR> int gdriver,
gmode; <BR>
gdriver=VGA; <BR>
gmode=VGAHI; <BR>
initgraph(&gdriver, &gmode, "c:\\tc");
<BR> bar3d(100, 100,
300, 250, 50, 1); /*画一长方体*/
<BR> getch();
<BR> closegraph();
<BR> return 0;
<BR> } <BR>
<P> 有时编程者并不知道所用的图形显示器适配器种类, 或者需要将编写的程序 <BR>用于不同图形驱动器,
Turbo C提供了一个自动检测显示器硬件的函数, 其调用 <BR>格式为: <BR>
void far detectgraph(int *gdriver, *gmode); <BR>
其中gdriver和gmode的意义与上面相同。 <BR> <BR> 例5.
自动进行硬件测试后进行图形初始化 <BR> #include <graphics.h>
<BR> int main() <BR> {
<BR> int gdriver,
gmode; <BR>
detectgraph(&gdriver, &gmode); /*自动测试硬件*/
<BR> printf("the
graphics driver is %d, mode is %d\n", gdriver,
<BR>
gmode); /*输出测试结果*/
<BR> getch();
<BR>
initgraph(&gdriver, &gmode, "c:\\tc");
<BR>
/* 根据测试结果初始化图形*/
<BR> bar3d(10, 10,
130, 250, 20, 1);
<BR> getch();
<BR> closegraph();
<BR> return 0;
<BR> } <BR>
<P> 上例程序中先对图形显示器自动检测, 然后再用图形初始化函数进行初始化 <BR>设置, 但Turbo
C提供了一种更简单的方法, 即用gdriver= DETECT 语句后再跟 <BR>initgraph()函数就行了。采用这种方法后,
上例可改为: <BR> <BR> 例6. <BR>
#include <graphics.h> <BR> int main()
<BR> {
<BR> int
gdriver=DETECT, gmode;
<BR>
initgraph(&gdriver, &gmode, "c:\\tc");
<BR> bar3d(50, 50,
150, 30, 1); <BR>
getch(); <BR>
closegraph(); <BR>
return 0; <BR> } <BR> 另外, Turbo
C提供了退出图形状态的函数closegraph(), 其调用格式为: <BR> void far
closegraph(void); <BR> 调用该函数后可退出图形状态而进入文本方式(Turbo C
默认方式), 并释放 <BR>用于保存图形驱动程序和字体的系统内存。 <BR>
<P> 2. 独立图形运行程序的建立 <BR> Turbo
C对于用initgraph()函数直接进行的图形初始化程序, 在编译和链接 <BR>时并没有将相应的驱动程序(*.BGI)装入到执行程序,
当程序进行到intitgraph() <BR>语句时, 再从该函数中第三个形式参数char *path中所规定的路径中去找相应的
<BR>驱动程序。若没有驱动程序, 则在C:\TC中去找, 如C:\TC中仍没有或TC不存在, <BR>将会出现错误:
<BR> BGI Error: Graphics not initialized (use
'initgraph') <BR> 因此, 为了使用方便, 应该建立一个不需要驱动程序就能独立运行的可执行
<BR>图形程序,Turbo C中规定用下述步骤(这里以EGA、VGA显示器为例): <BR> 1.
在C:\TC子目录下输入命令:BGIOBJ EGAVGA <BR>
此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。 <BR> 2.
在C:\TC子目录下输入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA <BR>
此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。 <BR> 3.
在程序中initgraph()函数调用之前加上一句: <BR>
registerbgidriver(EGAVGA_driver):
<BR>该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。 <BR>
经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。 <BR>假设已作了前两个步骤,若再向例6中加
registerbgidriver()函数则变成: <BR> 例7:
<BR> #include<stdio.h>
<BR> #include<graphics.h>
<BR> int main() <BR> {
<BR> int
gdriver=DETECT,gmode; <BR>
registerbgidriver(EGAVGA_driver): / *建立独立图形运行程序 */
<BR> initgraph( gdriver,
gmode,"c:\\tc"); <BR>
bar3d(50,50,250,150,20,1);
<BR> getch();
<BR> closegraph();
<BR> return 0;
<BR> } <BR> 上例编译链接后产生的执行程序可独立运行。
<BR> 如不初始化成EGA或CGA分辨率, 而想初始化为CGA分辨率, 则只需要将上述
<BR>步骤中有EGAVGA的地方用CGA代替即可。 <BR>
<P> 3.屏幕颜色的设置和清屏函数 <BR> 对于图形模式的屏幕颜色设置,
同样分为背景色的设置和前景色的设置。在 <BR>Turbo C中分别用下面两个函数。 <BR>
设置背景色: void far setbkcolor( int
color); <BR>
设置作图色: void far setcolor(int
color); <BR> 其中color 为图形方式下颜色的规定数值, 对EGA, VGA显示器适配器, 有关
<BR>颜色的符号常数及数值见下表所示。
<BR>
表3 有关屏幕颜色的符号常数表 <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
淡灰
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -