📄 图形涵数.htm
字号:
<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> }
<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>用于保存图形驱动程序和字体的系统内存。
<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代替即可。
<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
淡灰
WHITE
15 白色 <BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<BR> 对于CGA适配器, 背景色可以为表3中16种颜色的一种, 但前景色依赖于不同 <BR>的调色板。共有四种调色板,
每种调色板上有四种颜色可供选择。不同调色板所 <BR>对应的原色见表4。
<BR>
表4 CGA调色板与颜色值表 <BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<BR>
调色板
颜色值 <BR>─────────── ──────────────────
<BR> 符号常数
数值
0
1
2 3
<BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <BR>
C0
0
背景
绿
红 黄 <BR>
C1
1
背景 青
洋红 白 <BR>
C2
2
背景 淡绿
淡红 黄 <BR>
C3
3
背景 淡青
淡洋红 白 <BR>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<P> 清除图形屏幕内容使用清屏函数, 其调用格式如下: <BR>
voide far cleardevice(void); <BR> 有关颜色设置、清屏函数的使用请看例8。
<BR> 例8: <BR> #include<stdio.h>
<BR> #include<graphics.h>
<BR> int main() <BR> {
<BR> int gdriver, gmode,
i; <BR> gdriver=DETECT;
<BR>
registerbgidriver(EGAVGA_DRIVER);/*建立独立图形运行程序*/
<BR>
initgraph(&gdriver, &gmode", "");/*图形初始化*/
<BR>
setbkcolor(0);
/*设置图形背景*/ <BR>
cleardevice(); <BR>
for(i=0; i<=15; i++)
<BR> {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -