GDI

詞語

GDI是圖形設備介面(GDI:Graphics Device Interface)的縮寫,是Windows的子系統,它負責在視訊顯示器和印表機上顯示圖形。

GDI+是Windows 2000及以後版本的一個子系統,同原有的GDI(圖形設備介面)一樣,主要負責對顯示器和印表機進行管理。

作用


正如您所認為的那樣,GDI是Windows非常重要的部分。不只您為Windows編寫的應用系統在顯示視覺信息時使用GDI,就連Windows本身也使用GDI來顯示使用者介面對象,諸如菜單、滾動條、圖標和滑鼠游標。
在GDI中使用Rectangle繪製矩形時,GDI用當前畫筆繪製輪廓、用當前的畫刷將矩形內部自動填充,畫矩形和填充一步完成。

特點


GDI 是C++中常用的一種圖形圖像工具,VB、Delphi等語言也移植了GDI ,.net的諸多語言甚至完全採用GDI作為繪製其界面。
在Windows系統下,幾乎所有的API都是直接針對C語言的,除C/C++可直接使用這些API外,其它各種語言都必須移植這些API方法,而唯獨GDI,微軟提供的Gdiplus頭文件,從類型定義到方法介面,都是針對C++寫的,這就使得C語言沒法使用這些面向對象的方法,即使是GDI提供的原始API,如果不重新定義其參數中眾多的數據類型,C語言也是沒法使用的。
在GDI中繪圖,首先必須為DC中選入一個畫筆對象(在DC中的畫筆只有一支是可以使用的),這支“筆”一直會使用到下次新選定畫筆為止。在GDI中畫一條直線首先得將筆的“當前位置”移到直線的起點坐標上(MoveTo),然後才能進行畫直線的操作。

版本


也許是因為C語言不適合編寫Windows界面應用程序,所以至今沒有發現GDI的C版本(可能有,但沒發現)。GDI 沒C版本的一個可能的原因是:C++版本中的眾多的重載函數,預設參數,用C來寫卻是頭都大了,不知道用什麼函數名才好(考慮GDI使用了這些年,新的函數名不應與原函數名偏離太遠)。
GDI+是對原有的GDI在功能上的升級,GDI+為我們提供的功能主要有三類:矢量圖形輸出、光柵圖形輸出和文字排版等。GDI+與傳統的GDI相比,主要有以下六方面的新特色:漸變畫刷、獨立的路徑對象(Path Objects)、矩陣對象(Matrix Object)、區域(Scalable Regions)、Alpha Blending和多格式圖片支持。
GDI+為我們提供了在編程時使用的應用程序介面API(Application Programming Interface),通過這些API函數,GDI+讓程序員在設計程序中不必考慮具體的顯示器或印表機,直接使用由GDI+提供的類的方法便可以調用顯示器或印表機,真正做到與設備無關。