1. 程式人生 > >C語言圖形程式設計(二、圖形顯示)

C語言圖形程式設計(二、圖形顯示)

一、確定顯示卡
二、選擇顯示模式   
三、圖形顯示
    20. detectgraph() 顯示卡檢測函式
    21. initgraph() 圖形初始化函式
    22. getdrivername() 獲取圖形驅動程式名的指標
    23. getgraphmode() 獲取圖形模式函式
    24. getmoderange()獲取模式值範圍函式
    25. getmaxmode()獲取最大顯示模式函式
    26. getmodename()獲取顯示模式名函式
    27. graphdefaults()圖形設定復位預設值函式
    28. setgraphmode() 設定圖形模式函式
    29. restorecrtmode() 恢復文字顯示模式函式
    30. graphresult() 圖形操作結果函式
    31. grpaherrormsg() 圖形錯誤資訊函式
    32. setgraphbufsize()設定圖形緩衝區大小函式
    33. setactivepage() 設定可輸出顯示頁函式
    34. setvisualpage() 設定可見顯示頁數
    35. closegraph()關閉圖形模式函式
    




一、確定顯示卡
   微機系統顯示部分由顯示器(monitor)和顯示卡(adapter)兩部分組成。顯示器是獨立於主機的一種外部裝置,顯示卡或稱顯示適配卡,也有的稱圖形卡,是插在主機上的一塊電路板。但也有的顯示卡與主機板設計在一起。顯示卡包括暫存器組、儲存器和控制電路三大部分。其中儲存器又包括顯示RAM和ROM BIOS兩部分,微機對顯示螢幕的所有操作都是通過顯示卡來實現的。因此要進行圖形顯示 ,首先要確定計算機上安裝的是何種顯示卡。一種方法是詢問計算機或終端使用者,確定將要使用的顯示卡型別。這種方法很難,因為甚至專業程式設計師也不總是能確定他正在使用什麼樣的硬體。另一種方法是用軟體查詢硬體以識別當前的配置。如果有一些識別硬體的標準,這就很簡單了。在Borland C中對現在所使用的各種顯示卡提供了支援,這隻要呼叫detectgraph()函式就可以了,該函式為程式設計師確定計算機上使用的顯示卡型別。

二、選擇顯示模式
   顯示模式是指顯示卡支援的解析度與相應的顏色配置。每臺計算機都配置了某種型別顯示卡,可以為該顯示卡指定顯示模式。

三、圖形顯示
    進行圖形顯示首先要確定顯示卡,然後選擇其顯示模式。這些工作都可以呼叫圖形功能函式來完成,其實就是把適合於顯示卡的圖形驅動程式裝入記憶體。如果圖形驅動程式未裝入記憶體,那麼圖形函式就不能操作。

20. detectgraph() 顯示卡檢測函式
功能: 函式detectgraph()在計算機上安裝有顯示卡的情況下,測定其顯示卡的型別。
用法: 此函式呼叫方式為void detectgraph(int *driver,int *mode);
說明: 函式把driver所指向的整型變數設定為圖形驅動程式的程式碼,把mode所指向的整型變數設定為顯示卡支援的最高有效模式(即該顯示卡能支援的最高解析度)。
   該函式相應的標頭檔案為graphics.h
返回值: 返回適合於該顯示卡的圖形驅動程式的程式碼(也稱等價值),並存放在driver指向的變數中。若計算機系統中無圖形硬體,則由driver指向的變數設定為-2。
例: 檢測計算機是否裝有顯示卡:
   int driver,mode;
   detectgraph(&driver,&mode);
   if(driver==-2)
   {
      printf("no graphics adapter in the computer");
      exit(1);
   }

21. initgraph() 圖形初始化函式
功能: 函式initgraph()用於初始化圖形系統,把適合的圖形驅動程式裝入記憶體,設定圖形函式所用的顯示模式。
用法: 該函式呼叫方式為void initgraph(int *driver,int *mode,char *path);
說明: 1) 函式中引數driver指向圖形驅動程式(或者等價值)。
   在頭部檔案graphics.h中定義了圖形驅動程式的巨集名與其等價 ,如下:
巨集   名              等價值
------------------------------
DETECT                  0
CGA                     1
MCGA                    2
EGA                     3
EGA64                   4
EGAMONO                 5
IBM8514