一、gdi简介
要实现绘画功能就需要一个做画的平台及做画的工具。最常用的绘画平台可能就是一张白纸,除此之外,还需要一个画笔或一个画刷,它显示了绘画的发展和进步。 由于一个画笔只能拥有或使用一种颜色,这对于实现你的目标来说,可能就显的有些不够用了,因此你可能会最终需要很多画笔。
设备上下文是绘画平台及绘画所需要工具的集合体,它还包括平台的尺寸、方向、颜色和所有能实现你绘画想象力的附件。
当使用计算机时,肯定不能向通常那样将工具放在桌子上。为了在windows操作系统上作画,微软创造了图形设备接口,简称为gdi,它是类、函数、变量和常量的集合,或者说是在应用程序中绘画所需要的绝大部分对象。gdi由已安装在计算机中的gdi.dll动态库来提供。
二、gdi+
gdi+是windows系列操作系统用来执行绘画及其他相关图形操作的一套子系统。正如所看到的,新的操作系统windows xp 和windows server 2003中,gdi+已经替换掉了gdi(图形设备接口)。gdi+中的"+"表示相对于gdi来说,gdi+进行很大的改进,增加了新的特点,而这些在gdi中是很难实现的。gdi+允许你创建独立于设备的应用程序,也就是说不用考虑应用程序将在什么样的硬件上运行。
微软windows xp和windows server 2003本身都带有gdi+。如果想在以前的操作系统上使用gdi+,则必须进行安装。gdi+通过三个方面来提供它的功能:
(一)矢量图形
它是连续绘画所形成的区域,基于几何形状的图形,包括直线、线集、圆和四边形。它们在显示器上或其他设备上被看作是点集。为了完成这些类型操作,gdi+系统提供了不同的类来执行不同的任务。例如,一个类可以负责创建和准备用于绘画的工具,另外一个类则使用所提供的工具,来执行实际的绘画任务。
(二)成像
尽管创建一个带有可识别颜色的矢量图形看上去很简单,但是在设备上绘画或显示高级的图片却是一个挑战。正是因为这些原因,成像是用于处理这些复杂操作的范畴。
(三)排印
排印主要是创建、操纵应用程序中的字体,它甚至包括制造一些可用字体。
三、gdi+的基本工具
(一)图形平台
在gdi中绘画,必须获取设备上下文的句柄,这通过声明一个hdc变量或指向hdc的指针,然后调用类似于beginpaint()的函数来初始化设备上下文来实现。同时,还需要创建绘画所需的工具,例如一个画笔或一个画刷。一旦工具准备好了,必须将它们选入设备上下文,以使它们可以使用。画完后,还需要释放设备上下文。
在gdi+中,使用一个graphic或 graphics 对象来进行绘画。
(二)填充色彩
颜色对于增强一个对象的美学外观发挥了最基础的作用。颜色是非空间对象,用于增强对象的视觉效果。为了支持色彩,gdi+库提供了颜色结构。
一个颜色被创建为包含四字节的值,第一字节的值代表alpha值,它绝大部分情况下是在内部使用,第二、三和四个字节的值分别代表r、g、b(红、绿、兰)的数值。