函數原型 (Borland BGI / EasyX 兼容)
void initgraph(int *graphdriver, int *graphmode, const char *pathtodriver);
int graphresult(void);
參數含義
| 參數 | 說明 | 典型值 |
graphdriver | 輸出參數,返回檢測到的圖形驅動程式代碼 | VGA, EGA, DETECT (自動檢測) |
graphmode | 輸出參數,返回選定的圖形模式 (分辨率/色深) | VGAHI (640x480x16色) |
pathtodriver | 驅動程式文件路徑 (.bgi),空字串 "" 表示當前目錄/系統路徑 | "", "C:\\TC\\BGI" |
標準初始化流程
#include
#include
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, ""); // 空字串:搜尋當前目錄/環境變量
int err = graphresult();
if (err != grOk) {
printf("圖形初始化失敗: %s\n", grapherrormsg(err));
return 1;
}
// ... 繪圖代碼 ...
closegraph(); // 釋放資源,恢復文本模式
return 0;
}
常見錯誤代碼
| 錯誤碼 | 常量 | 原因 |
| -1 | grNotDetected | 未檢測到圖形硬體/驅動 |
| -2 | grFileNotFound | 找不到 .bgi 驅動文件 |
| -3 | grInvalidDriver | 驅動文件損壞/版本不匹配 |
| -4 | grNoLoadMem | 內存不足無法加載驅動 |
| -5 | grNoScanMem | 內存不足無法掃描驅動 |
現代替代方案 (推薦)
- EasyX (Windows):
initgraph(640, 480) 簡化版,無需 BGI,支援中文、圖片、音頻。
- SDL2 / SFML / Raylib:跨平台、硬體加速、現代 C/C++ API。
- OpenGL / Vulkan:專業 3D/2D 渲染管線。