概述
圖形設備接口(GDI :Graphics Device Interface),它的主要任務是負責系統與繪圖程式之間的信息交換,處理所有Windows程式的圖形輸出。
在Windows作業系統下,絕大多數具備圖形界面的應用程式都離不開圖形設備接口,我們利用圖形設備接口所提供的眾多函式就可以方便的在螢幕、印表機及其它輸出設備上輸出圖形,文本等操作。圖形設備接口的出現使程式設計師無需要關心硬體設備及設備驅動,就可以將應用程式的輸出轉化為硬體設備上的輸出,實現了程式開發者與硬體設備的隔離,大大方便了開發工作。
圖形設備接口(GDI)提供了一系列的函式和相關的結構,應用程式可以使用它們在顯示器、印表機或其他設備上生成圖形化的輸出結果。使用GDI函式可以繪製直線、曲線、閉合圖形、路徑、文本以及點陣圖圖像。所繪製的圖形的顏色和風格依賴於所創建的繪圖對象,即畫筆、筆刷和字型。你可以使用畫筆來繪製直線和曲線,使用筆刷來填充閉合圖形的內部,使用字型來書寫文本。
應用程式通過創建設備環境(DC),可以直接向指定的設備進行輸出。設備環境是一個GDI管理的結構。其中包含一些有關設備的信息,比如它的操作方式及當前的選擇。應用程式可使用設備環境函式來創建DC。GDI將返回一個設備環境句柄,在隨後的調用中,該句柄用於表示該設備。例如,應用程式可以使用該句柄來獲取有關該設備性能的一些信息,諸如它的類型(顯示器、印表機或其他設備),它的顯示界面的尺寸和解析度等。
應用程式可以直接向一個物理設備進行輸出,比如顯示器或印表機;也可以向一個"邏輯"設備進行輸出,比如記憶體設備或元檔案。邏輯設備向應用程式所提供的保存輸出結果的格式,可以很容易地將其傳送到物理設備上。一旦應用程式將輸出結果記錄到了一個元檔案中,那么該元檔案就可以被使用任意多次,並且該輸出結果可以被傳送到任意多個物理設備上。
應用程式可以使用屬性函式來設定設備的操作方式和當前的選擇。操作方式包括文本和背景顏色,混色方式(也稱為二元光柵操作,用於確定畫筆或筆刷的顏色與繪圖區域現有的顏色如何進行混色),映射方式(用於指定GDI如何將應用程式所用的坐標映射到設備坐標系統上)。當前的選擇是指繪圖時使用哪個繪圖對象。
圖形設備接口函式
圖形設備接口函式包括以下幾類:
點陣圖函式(Bltmap)
點陣圖是一個圖形對象,可將圖像作為檔案進行創建、處理(比例縮放、滾動、旋轉和繪製)和存儲。
點陣圖函式提供了一系列處理點陣圖的方法。
筆刷函式(Brush)
筆刷是一種繪圖工具,Win32應用程式可使用它繪製多邊形、橢圓形和路徑的內部。繪圖應用程式使用筆刷繪製圖形;字處理應用程式使用筆刷繪製水線;計算機輔助設計(CAD)應用程式使用筆刷繪製截面視圖的內部;電子表格應用程式使用筆刷繪製餅圖的扇形和直方圖的方條。筆刷函式提供了一系列創建和使用筆刷的方法。
剪裁函式(Clipping)
剪裁是一種處理過程,它將輸出到某個區域或路徑中的內容限制在應用程式視窗的顯示區內。剪裁函式提供了一系列處理剪裁區域的方法。
顏色函式(Color)
顏色是組成Win32應用程式所生成的圖片和圖像的一個重要元素。 Win32 API提供了一系列管理和使用畫筆、筆刷、文本和點陣圖的顏色的函式。
坐標空間及映射函式(Coordinate Space and Transformation)
Win32應用程式使用坐標空間和映射函式對輸出的圖形進行比例縮放、旋轉、轉換、剪裁和反射。
坐標空間是基於笛卡爾坐標系統的一個平面空間。該坐標系統要求有兩個垂直相交的、長度相等的坐標軸。共有4種坐標空間:現實坐標、頁面坐標、設備坐標、物理設備坐標(顯示區,或桌面,或列印紙的頁面)。映射方式就是改變("映射")對象的大小、方向和形狀的一種算法。
設備環境函式(Device Context)
設備環境是一個結構,它定義了一系列圖形對象及其相關的屬性,以及會影響輸出結果的繪圖方式。這些圖形對象包括:畫筆(用於畫直線),筆刷(用於繪圖和填充),點陣圖(用於螢幕的拷貝或滾動),調色板(用於定義可用的顏色集),剪裁區(用於剪裁和其他操作),路徑(用於繪圖和畫圖操作)。設備環境函式用於對設備環境進行創建、刪除或獲取信息。
填充圖形函式(Filled Shape)
填充圖形是一些幾何圖形,其輪廓由當前的畫筆繪製,內部由當前的筆刷填充。共有5種填充圖形:橢圓,弦圖,餅圖,多邊形,矩形。填充圖形函式用於對填充圖形進行操作。
字型和文本函式(Font and Text)
字型用於在視頻顯示器或其他輸出設備上繪製文本。Win32 API提供了一系列用於安裝、選擇和查詢各種字型的字型和文本函式。
ICM 2.0函式
Microsoft Windows 98和Windows NT 5.0所使用的顏色管理方案稱為 Image Color Management版本 2.0,或ICM2.0,由一系列函式組成。
直線和曲線函式(Line and Curve)
直線和曲線用於在光柵設備上繪製輸出圖形。一條直線是光柵顯示器上的一系列高亮像素點(或列印紙上的一系列點),由兩個點進行標識:起點和終點。一條規則曲線也是光柵顯示器上的一系列高亮像素點(或列印紙上的一系列點),符合某個二次曲線段的周界(或一部分)。不規則曲線則是由不符合二次曲線段的一系列像素點組成。
元檔案函式(Metafile)
元檔案是一個結構的集合,這些結構是以與設備無關的格式存儲圖像。設備無關是元檔案與點陣圖的差異之一。與點陣圖不同,元檔案保證是與設備無關的。不過,元檔案有一個缺點:它通常比點陣圖的繪圖速度慢。因此,如果一個應用程式要求有較快的繪圖速度,而不需要具有設備無關性,則應該用點陣圖代替元檔案。
元檔案函式提供了一些對元檔案進行操作的方法。
多顯示器支持函式(Multple Display Monltors)
每個Windows工作站所支持的顯示器個數是不受限制的。可以用創建鄰接區域的方式安排多個顯示器。每個顯示器的大小和顏色深淺都可以獨立設定。
所有的顯示器螢幕一起構成了一個虛擬螢幕。桌面視窗覆蓋整個虛擬螢幕,而不僅僅是某個顯示螢幕。由於現有的應用程式都要求顯示器具有一個原點坐標(0,0),所以虛擬螢幕必須在某個顯示器上包含原點坐標(0,0),這個顯示器就被看作是主顯示器。
每個物理顯示設備都由一個hmonitor類型的顯示器句柄表示。一個顯示器在它的整個生存期間具有相同的HMONITOR值。
任何顯示設備環境(DC)的Win32函式所返回的值都是主顯示器的DC。要想獲取其他顯示器的DC,可使用EnumDisplayMonitors函式。系統對每個顯示器調用回調函式,為該顯示器傳入一個DC值。用戶可以使用該DC在該顯示器上繪圖。
繪圖和畫圖函式(Painting and Drawing)
繪圖和畫圖函式為應用程式提供了一系列在視窗中繪圖的方法,以及如何創建和使用顯示設備環境(DC)的方法。
路徑函式(Path)
一個路徑是指一個或多個被填充、被繪製輪廓或既被填充又被繪製輪廓的圖形(或形狀)。Win32應用程式將路徑用作很多用途,在繪圖和畫圖應用程式中使用路徑。計算機輔助設計(CAD)應用程式用路徑來創建唯一剪裁區,繪製不規則形狀的輪廓,以及填充不規則形狀的內部。路徑函式用於創建、改變和繪製路徑。
畫筆函式(Pen)
畫筆是Win32應用程式用於繪製直線和曲線的圖形工具。畫圖應用程式使用畫筆來畫手畫線、直線以及曲線。計算機輔助設計(CAD)應用程式用畫筆來畫可見線、隱藏線、截面線、中心線等等。字處理和桌面出版應用程式用畫筆來畫邊界和水線。電子表格應用程式用畫筆來指明圖表的趨向,以及勾勒直方圖和餅圖的輪廓。畫筆函式提供了一系列使用畫筆的方法。
列印和列印假脫機函式(Printing and Print spooler)
Microsoft Windows和Windows NT提供了一套完整的函式,使應用程式可以在不同的設備上進行列印,如雷射印表機,向量繪圖儀,光柵印表機,以及傳真機等。
矩形函式(Rectangle)
Win32應用程式使用矩形來指定顯示螢幕上或視窗中的一個矩形區域。矩形函式用於對矩形進行操作。
區域函式(Region)
區域是指一個可被填充、著色、轉換和加外框的形狀,包括矩形、多邊形或橢圓(或這幾種形狀的組合),用於完成擊鍵測試(測試游標位置)。
區域函式用於對區域進行操作。