图形设备接口


图形设备接口 (正體)

跳过字词转换说明

GDI是图形设备接口(Graphics Device InterfaceGraphical 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 命名空间提供对GDI+的支持。The GDI+ 的DLL 可移植到旧有的 Windows版本上。

GDI+ 类似 Apple 的 Quartz 2D 子系统, 以及属于开放源码(open-source)的 libart 和 Cairo 库。

参考文献

外部链接







stock | retire | vm
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History