initgraph是函式名 ,功能為初始化圖形系統。pathtodriver表示存放圖形驅動檔案的路徑。頭檔案是graphics.h。
基本介紹
- 中文名:initgraph
- 功 能:初始化圖形系統
- 函式原型:void far initgraph(int far
- 頭檔案::graphics.h
簡介,例解,
簡介
函式名: initgraph()
功 能: 初始化圖形系統
函式原型: void far initgraph(int far *graphdriver, int far *graphmode,
char far *pathtodriver);graphdriver是上漲指向圖形驅動序號變數的指針;graphmode是在graphdriver選定後,指向圖形顯示模式序號變數的指針。pathtodriver表示存放圖形驅動檔案的路徑。
頭檔案:graphics.h
★圖形模式的初始化★
不同的顯示器適配器有不同的圖形解析度。即是同一顯示器適配器, 在不同
模式下也有不同解析度。因此, 在螢幕作圖之前, 必須根據顯示器適配器種類將
顯示器設定成為某種圖形模式, 在未設定圖形模式之前,微機系統默認螢幕為文
本模式(80列, 25行字元模式), 此時所有圖形函式均不能工作。設定螢幕為圖形
模式, 可用下列圖形初始化函式:
void far initgraph(int far *gdriver, int far *gmode, char *path);
其中gdriver和gmode分別表示圖形驅動器和模式, path是指圖形驅動程式所
在的目錄路徑。有關圖形驅動器、圖形模式的符號常數及對應的解析度見表2。
圖形驅動程式由Turbo C出版商提供,檔案擴展名為.BGI。根據不同的圖形
適配器有不同的圖形驅動程式。例如對於EGA、 VGA 圖形適配器就調用驅動程式
EGAVGA.BGI。
例解
表2. 圖形驅動器、模式的符號常數及數值
圖形驅動器(gdriver) 圖形模式(gmode)
─────────── ─────────── 色調 解析度
符號常數 數值 符號常數 數值
CGA 1 CGAC0 0 C0 320*200
CGAC1 1 C1 320*200
CGAC2 2 C2 320*200
CGAC3 3 C3 320*200
CGAHI 4 2色 640*200
MCGA 2 MCGAC0 0 C0 320*200
MCGAC1 1 C1 320*200
MCGAC2 2 C2 320*200
MCGAC3 3 C3 320*200
MCGAMED 4 2色 640*200
MCGAHI 5 2色 640*480
EGA 3 EGALO 0 16色 640*200
EGAHI 1 16色 640*350
EGA64 4 EGA64LO 0 16色 640*200
EGA64HI 1 4色 640*350
EGAMON 5 EGAMONHI 0 2色 640*350
IBM8514 6 IBM8514LO 0 256色 640*480
IBM8514HI 1 256色 1024*768
HERC 7 HERCMONOHI 0 2色 720*348
ATT400 8 ATT400C0 0 C0 320*200
ATT400C1 1 C1 320*200
ATT400C2 2 C2 320*200
ATT400C3 3 C3 320*200
ATT400MED 4 2色 320*200
ATT400HI 5 2色 320*200
VGA 9 VGALO 0 16色 640*200
VGAMED 1 16色 640*350
VGAHI 2 16色 640*480
PC3270 10 PC3270HI 0 2色 720*350
DETECT 0 用於硬體測試
例4. 使用圖形初始化函式設定VGA高解析度圖形模式
#include <graphics.h>
int main()
{
int gdriver, gmode;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver, &gmode, "c:\\tc");
bar3d(100, 100, 300, 250, 50, 1); /*畫一長方體*/
getch();
closegraph();
return 0;
}
有時編程者並不知道所用的圖形顯示器適配器種類, 或者需要將編寫的程式
用於不同圖形驅動器, Turbo C提供了一個自動檢測顯示器硬體的函式, 其調用
格式為:
void far detectgraph(int *gdriver, *gmode);
其中gdriver和gmode的意義與上面相同。
例5. 自動進行硬體測試後進行圖形初始化
#include <graphics.h>
int main()
{
int gdriver, gmode;
detectgraph(&gdriver, &gmode); /*自動測試硬體*/
printf("the graphics driver is %d, mode is %d\n", gdriver,
gmode); /*輸出測試結果*/
getch();
initgraph(&gdriver, &gmode, "c:\\tc");
/* 根據測試結果初始化圖形*/
bar3d(10, 10, 130, 250, 20, 1);
getch();
closegraph();
return 0;
}
上例程式中先對圖形顯示器自動檢測, 然後再用圖形初始化函式進行初始化
設定, 但Turbo C提供了一種更簡單的方法, 即用gdriver= DETECT 語句後再跟
initgraph()函式就行了。採用這種方法後, 上例可改為:
例6.
#include <graphics.h>
int main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver, &gmode, "c:\\tc");
bar3d(50, 50, 150, 30, 1);
getch();
closegraph();
return 0;
}
另外, Turbo C提供了退出圖形狀態的函式closegraph(), 其調用格式為:
void far closegraph(void);
調用該函式後可退出圖形狀態而進入文本方式(Turbo C 默認方式), 並釋放
用於保存圖形驅動程式和字型的系統記憶體。
程式例:
#include "graphics.h"
#include "stdio.h"
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
/* initialize graphics mode */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* return with error code */
}
/* draw a line */
line(0, 0, getmaxx(), getmaxy());