萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> TC圖形教程:圖形模式的初始化

TC圖形教程:圖形模式的初始化

class="area"> 圖形方式
  Turbo C 提供了非常豐富的圖形函數,所有圖形函數的原型均在graphics. h 中,本節主要介紹圖形模式的初始化、獨立圖形程序的建立、基本圖形功能、圖形窗口以及圖形模式下的文本輸出等函數。
  另外,使用圖形函數時要確保有顯示器圖形驅動程序*BGI,同時將集成開發環境options/Linker中的Graphics lib選為on,只有這樣才能保證正確使用圖形函數。

第一節 圖形模式的初始化


  不同的顯示器適配器有不同的圖形分辨率。即是同一顯示器適配器,在不同模式下也有不同分辨率。因此,在屏幕作圖之前,必須根據顯示器適配器種類將顯示器設置成為某種圖形模式,在未設置圖形模式之前,微機系統默認屏幕為文本模式(80列,25行字符模式),此時所有圖形函數均不能工作。設置屏幕為圖形模式,可用下列圖形初始化函數:
void far initgraph(int far *gdriver, int far *gmode,char *path);
其中gdriver和gmode分別表示圖形驅動器和模式,path是指圖形驅動程序所在的目錄路徑。有關圖形驅動器、圖形模式的符號常數及對應的分辨率見下表。

圖形驅動程序由Turbo C出版商提供,文件擴展名為.BGI。 根據不同的圖形適配器有不同的圖形驅動程序。例如對於EGA、 VGA 圖形適配器就調用驅動程序EGAVGA.BGI。

圖形驅動器、模式的符號常數及數值:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
圖形驅動器(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 用於硬件測試
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
使用圖形初始化函數設置VGA高分辨率圖形模式:

#include
int main()
{
int gdriver, gmode;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
bar3d(100, 100, 300, 250, 50, 1); /*畫一長方體*/
getch();
closegraph();
return 0;
}
有時編程者並不知道所用的圖形顯示器適配器種類,或者需要將編寫的程序用於不同圖形驅動器,Turbo C 提供了一個自動檢測顯示器硬件的函數,其調用格式為:

void far detectgraph(int *gdriver, *gmode); 其中gdriver和gmode的意義與上面相同。

自動進行硬件測試後進行圖形初始化:

#include
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:\\caic\\bgi");
/* 根據測試結果初始化圖形*/
bar3d(10, 10, 130, 250, 20, 1);
getch();
closegraph();
return 0;
}
上例程序中先對圖形顯示器自動檢測,然後再用圖形初始化函數進行初始化設置,但Turbo C提供了一種更簡單的方法, 即用gdriver=DETECT 語句後再跟initgraph()函數就行了。

采用這種方法後,上例可改為:

#include
int main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
bar3d(50, 50, 150, 30, 50, 1);
getch();
closegraph();
return 0;
}
另外,Turbo C 提供了退出圖形狀態的函數closegraph(),其調用格式為:

void far closegraph(void);

調用該函數後可退出圖形狀態而進入文本方式( Turbo C 默認方式),並釋放用於保存圖形驅動程序和字體的系統內存。

copyright © 萬盛學電腦網 all rights reserved