图形设备接口

维基百科,自由的百科全书

跳转到: 导航, 搜索

GDI是图形设备接口(Graphics Device Interface, 或Graphical Device Interface)的简称,它是微软公司的视窗操作系统(Microsoft Windows)的三大核心部件(也称“子系统”)之一。

GDI是微软视窗系统(Microsoft Windows)表徵图形对象及将其传送给诸如显示器、打印机之类输出设备的标准。GDI 類似Macintosh傳統的 QuickDraw.

目录

[编辑] 簡介

  1. 在DOS時期,應用程式如果要對於顯示裝置做輸出的話,必須使用INT 10[1],或對於VGA卡直接I/O,或直接對VRAM所在的記憶体位置作填值。但VGA卡當時日新月異,各家的VGA卡在其I/O ports的定義並不一致,雖中間有推出一個名為VESA SVGA的顯示卡驅動程式的共用標準,但由於DOS時先天的64KB的分頁限制,仍有許多不便。
  2. Microsoft在開發Windows時,發現這個問題,於是決定打造一個GDI子系統,將顯示裝置改以API的方式進行操作,以便將各VGA卡的差異透過各VGA卡廠商自行製作的驅動程式來銜接GDI,來打消各VGA卡在操作上的彼此差異。
  3. 但Microsoft很快就被其他的程式開發者告知,GDI太慢了,因此Microsoft就再出一個WING[2]用於Windows 3.0/3.1,讓應用程式能夠直接對VRAM進行填值,以加速繪圖的相關計算。
  4. 後來,WING再改為DirectDraw成為DirectX的一部份,直到DirectX 7。(DirectX 8以後,DirectX中2D與3D顯示技術合併,開始進入全3D的貼圖計算方式)
  5. 後來,Microsoft再推 .Net Framework,又再把 GDI 用 .Net Framework方式進行封裝,可是由於GDI本身的限制,再加上Microsoft自己在MSDN Library上面用来写着爽的文件(有些功能已有技術文件,但從未實做出可用之功能過),再加上GDI+在圖形計算與顯示很慢,以及GDI+先後飽受遠端程式碼執行的漏洞的困擾,因此GDI+無法成為Microsoft在圖形子系統的主流。
  6. 再後來,DirectX 10進入XNA的時代,XNA是以DirectX的COM為基礎,以.Net Framework方式進行封裝,所以XNA身兼DirectX的效能與.Net Framework的使用便利性。XNA目前被應用於XBOX系列的遊戲主機上,已成為新一代的圖形子系統的主流。

[编辑] GDI+

GDI+ 从Windows XP 作業系統开始引入,提供二維的向量圖形,改進舊有的GDI,加強的視覺化屬性,例如邊界,漸變和透明。通過 GDI+,能夠直接將BMP轉成JPG或其它格式的圖片,還能夠生成SVGFlash等。GDI+ 使用 ARGB 的值來表示顏色。GDI+的雙緩衝技術可以提高繪圖效率,可避免螢幕閃爍。

GDI+提供了硬件加速功能,可以直接访问硬件。

隨GDI+推出了加強型EMF,即EMF+,可以同時支持GDI和GDI+。Microsoft .NET 透過 System.Drawing namespace 提供對GDI+的支援。The GDI+ 的DLL 可移植到舊有的 Windows版本上。

GDI+ 類似 Apple 的 Quartz 2D subsystem, 以及屬於開放源碼(open-source)的 libartCairo libraries。

[编辑] 参考文献

[编辑] 外部連結

个人工具