两个意思,一个是图形设备接口的英文缩写;另一个是全球防卫组织。
GDI(全球防卫组织):
全球防御组织是世界上最发达国家的军事化国际联盟,由Westwood Studios(后来的EA)为美国的个人电脑发行了一系列即时战略游戏“命令与征服”,与凯恩领导的NOD兄弟会和入侵地球的思金人斗争。
GDI(图形设备接口):
GDI的主要任务是在系统和绘图程序之间交换信息,并处理所有Windows程序的图形输出。在Windows *** 作系统下,大多数具有图形界面的应用程序都离不开GDI。借助GDI提供的功能,图形和文本可以轻松地输出到屏幕、打印机和其他输出设备上。
扩展资料:
GDI(图形设备接口)的特点:
1、不允许程序直接访问物理显示硬件,通过称为“设备环境”的抽象接口间接访问显示硬件;
2、程序需要与显示硬件(显示器、打印机等) 进行通讯时,必须首先获得与特定窗口相关联的设备环境;
3、用户无需关心具体的物理设备类型;
4、Windows参考设备环境的数据结构完成数据的输出。
参考资料来源:百度百科-GDI
参考资料来源:百度百科-全球防卫组织
GDI是图形设备接口(Graphics Device Interface, 或Graphical Device Interface)的简称,它是微软公司的视窗 *** 作系统(Microsoft Windows)的三大内核部件(也称“子系统”)之一。GDI是微软视窗系统(Microsoft Windows)表征图形对象及将其传送给诸如显示器、打印机之类输出设备的标准。
在DOS时期,应用程序如果要对于显示设备做输出的话,必须使用INT 10[1],或对于VGA卡直接I/O,或直接对VRAM所在的记忆体位置作填值。但VGA卡当时日新月异,各家的VGA卡在其I/O ports的定义并不一致,虽中间有推出一个名为VESA SVGA的显卡驱动程序的共用标准,但由于DOS时先天的64KB的分页限制,仍有许多不便。
Microsoft在开发Windows时,发现这个问题,于是决定打造一个GDI子系统,将显示设备改以API的方式进行 *** 作,以便将各VGA卡的差异通过各VGA卡厂商自行制作的驱动程序来衔接GDI,来打消各VGA卡在 *** 作上的彼此差异。
但Microsoft很快就被其他的程序开发者告知,GDI太慢了,因此Microsoft就再出一个WING[2]用于Windows 3.0/3.1,让应用程序能够直接对VRAM进行填值,以加速绘图的相关计算。
后来,Microsoft再推 .Net Framework,又再把 GDI 用 .Net Framework方式进行封装,可是由于GDI本身的限制,再加上Microsoft自己在MSDN Library上面用来写着爽的文件(有些功能已有技术文件,但从未实做出可用之功能过),再加上GDI+在图形计算与显示很慢,以及GDI+先后饱受远程代码运行的漏洞的困扰,因此GDI+无法成为Microsoft在图形子系统的主流。
再后来,DirectX 10进入XNA的时代,XNA是以DirectX的COM为基础,以.Net Framework方式进行封装,所以XNA身兼DirectX的效能与.Net Framework的使用便利性。XNA目前被应用于XBOX系列的游戏主机上,已成为新一代的图形子系统的主流。
GDI在Windows中定义为Graphics Device Interface,即图形设备接口,是Windows API(Application Programming Interface)的一个重要组成部分。它是Windows图形显示程序与实际物理设备之间的桥梁,GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行 *** 作。它的桥梁作用体现在:(1)用户通过调用GDI函数将逻辑空间的 *** 作转化为具体针对设备驱动程序的调用。
为实现图形设备无关性,Windows 的绘图 *** 作在一个设备描述表上进行。用户拥有自己的"逻辑坐标"系统,它独立于实际的物理设备,与"设备坐标"相对应。开发Windows应用程序时,程序员关心的是逻辑坐标,我们在逻辑坐标系上绘图,利用GDI将逻辑窗口映射到物理设备上。
(2)GDI能检测具体设备的能力,并依据具体的设备以最优方式驱动这些设备,完成真实的显示。
GDI函数大致可分类为:设备上下文函数(如GetDC、CreateDC、DeleteDC)、 画线函数(如LineTo、Polyline、Arc)、填充画图函数(如Ellipse、FillRect、Pie)、画图属性函数(如SetBkColor、SetBkMode、SetTextColor)、文本、字体函数(如TextOut、GetFontData)、位图函数(如SetPixel、BitBlt、StretchBlt)、坐标函数(如DPtoLP、LPtoDP、ScreenToClient、ClientToScreen)、映射函数(如SetMapMode、SetWindowExtEx、SetViewportExtEx)、元文件函数(如PlayMetaFile、SetWinMetaFileBits)、区域函数(如FillRgn、FrameRgn、InvertRgn)、路径函数(如BeginPath、EndPath、StrokeAndFillPath)、裁剪函数(如SelectClipRgn、SelectClipPath)等。
GDI虽然使程序员得到了一定程度的解脱,但是其编程方式仍很麻烦。譬如,显示一张位图,程序员需要进行"装入位图―读取位图文件头信息―启用设备场景―调色板变换"等一连串 *** 作。而有了GDI+,这些问题便迎刃而解了。
顾名思义,GDI+是GDI的增强版。它是微软在Windows 2000以后 *** 作系统中提供的新接口,其通过一套部署为托管代码的类来展现,这套类被称为GDI+的"托管类接口"。GDI+主要提供了以下三类服务:
(1) 二维矢量图形:GDI+提供了存储图形基元自身信息的类(或结构体)、存储图形基元绘制方式信息的类以及实际进行绘制的类;
(2) 图像处理:大多数图片都难以划定为直线和曲线的集合,无法使用二维矢量图形方式进行处理。因此,GDI+为我们提供了Bitmap、Image等类,它们可用于显示、 *** 作和保存BMP、JPG、GIF等图像格式。
(3) 文字显示:GDI+支持使用各种字体、字号和样式来显示文本。
GDI接口是基于函数的,而GDI+是基于C++类的对象化的应用程序编程接口,因此使用起来比GDI要方便。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)