第二章已初步使用圖形裝置介面(GDI),其核心目標之一是支援與輸出裝置無關的圖形繪製(如顯示器、印表機)。Windows 大部分圖形運算由 GDI.EXE 模組處理,該模組透過呼叫各裝置驅動程式中的例行程式來控制硬體。例如顯示驅動程式負責存取視訊硬體。GDI 將應用程式與具體輸出裝置隔離,使應用程式能在任何支援 Windows 的圖形輸出裝置上運作。
圖形輸出裝置分為兩大類:
Windows GDI 隔離硬體特性,既可作為高階向量繪圖系統,也能進行低階像素操作。開發者無需過度擔心色彩問題:若指定色彩裝置無法顯示,Windows 會自動選擇最接近的純色,或混合多種純色模擬;在單色顯示器上則以灰階呈現色彩。應用程式亦可查詢裝置特性(可顯示色彩數、顯示區尺寸等)以發揮硬體效能。
裝置內容擁有許多決定 GDI 函數行為的當前屬性。呼叫 TextOut() 時,僅需指定裝置內容控制代碼、起始座標、文字與長度,字型、文字色、背景色、字元間距等特徵皆由裝置內容屬性決定。每種裝置內容皆有預設屬性,可透過 GDI 函數修改。取得顯示裝置內容(GetDC()、BeginPaint())時,屬性為預設值:
| 屬性 | 預設值 | 屬性 | 預設值 |
|---|---|---|---|
| 視區原點 | (0, 0) | 筆當前位置 | (0, 0) |
| 視區範圍 | (1, 1) | 筆顏色 | BLACK_PEN |
| 視窗原點 | (0, 0) | 文字顏色 | 黑色 |
| 視窗範圍 | (1, 1) | 裝置原點 | 用戶區左上角 |
| 背景顏色 | 白色 | 繪圖模式 | R2_COPYPEN |
| 背景模式 | OPAQUE | 字型 | SYSTEM_FONT |
| 位圖 | 任意值 | 字元間距 | 0 |
| 刷子 | WHITE_BRUSH | 映射模式 | MM_TEXT |
| 刷子原點 | (0, 0) | 多邊形填充 | ALTERNATE |
| 裁剪區 | 用戶區/無效矩形/子視窗 | 座標模式 | ABSOLUTE |
| 調色盤 | DEFAULT_PALETTE | 縮放模式 | BLACKONWHITE |
為在輸出裝置上定位與繪製圖形,Windows 採用笛卡爾座標系,單位為像素(裝置單位)。X 軸向右遞增,Y 軸向下遞增。

圖 3-1 Windows 的裝置座標系統
視訊顯示裝置為共享資源,Windows 透過不同裝置內容限制應用程式輸出範圍,保護各程式顯示內容不受干擾。應用程式可取得三種顯示裝置內容控制代碼,各代表螢幕不同區域,擁有獨立座標原點:
GetDC() 或 BeginPaint() 取得。GDI 函數座標相對於用戶區座標系。GetWindowDC() 取得。應用程式鮮少在此區域繪圖。CreateDC("DISPLAY", NULL, NULL, NULL) 取得。座標相對於螢幕座標系。三種座標系滿足不同繪圖需求。例如使用用戶區座標系,視窗在螢幕移動時,用戶區內容相對座標不變。但以像素為單位的座標系不符人類習慣,且不同解析度裝置間難以移植,因此 Windows 提供邏輯座標系與映射模式機制(後續章節詳細說明)。