初學者常問:「為什麼 VC++ 找不到 graphics.h?」「BGI 檔案去哪了?」「VC++ 不支援圖形嗎?」 這類問題源於對語言標準、作業系統、硬體抽象層三者關係的混淆。本文從歷史脈絡梳理關鍵觀念,助你建立正確心智模型。
C/C++ 語言標準(ANSI/ISO)刻意不定義任何平台相關功能(圖形、聲音、網路、檔案系統細節)。標準庫僅提供跨平台通用的運算、記憶體、字串、I/O 流等抽象。圖形輸出屬於平台特定功能,由作業系統或硬體廠商提供 API。
graphics.h 介面,隨附 *.BGI 驅動檔。VC++ 本質是 Windows 平台定製的 C/C++ 實作,原生整合 Win32 API。圖形開發三步走:
HWND(視窗控制代碼)。HDC hdc = GetWindowDC(hwnd); — 繪圖的「畫布」。LineTo、Rectangle、TextOut、SetPixel… 或使用 MFC 封裝類 CDC、CPen、CBrush。// 簡易繪圖範例
void OnPaint() {
CPaintDC dc(this); // 取得 DC
CPen pen(PS_SOLID, 2, RGB(255,0,0));
CPen* old = dc.SelectObject(&pen);
dc.MoveTo(10, 10);
dc.LineTo(200, 200); // 畫線
dc.SelectObject(old);
}
進階需求(高速動畫、遊戲)可轉向 DirectX / OpenGL / Vulkan,直接操作顯存或 GPU 指令佇列。
本文整理自相關技術討論,旨在釐清觀念,歡迎指正補充。