GDI+简介

 
1. 引言
   GDI+ Windows XP 中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过 C++ 类实现的应用程序编程接口。顾名思义, GDI+ 是以前版本 GDI 的继承者,出于兼容性考虑, Windows XP 仍然支持以前版本的 GDI ,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用 GDI+ ,因为 GDI+ 对以前的 Windows 版本中 GDI 进行了优化,并添加了许多新的功能。
  作为图形设备接口的 GDI+ 使得应用程序开发人员在输出屏幕和打印机信息的时候无需考虑具体显示设备的细节 , 他们只需调用 GDI+ 库输出的类的一些方法即可完成图形操作 , 真正的绘图工作由这些方法交给特定的设备驱动程序来完成 ,GDI+ 使得图形硬件和应用程序相互隔离 . 从而使开发人员编写设备无关的应用程序变得非常容易。
2.GDI+
新增功能
   (1) 渐变的画刷 (Gradient Brushes)
   GDI+ 允许用户创建一个沿路径或直线渐变的画刷 , 来填充外形 (shapes), 路径 (paths), 区域 (regions), 渐变画刷同样也可以画直线、曲线、路径,当你用一个线形画刷填充一个外形 (shapes) 时,颜色就能够沿外形逐渐变化。
   (2) 基数样条函数( Cardinal Splines
   GDI +支持基数样条函数,而 GDI 不支持。基数样条是一组单个曲线按照一定的顺序连接而成的一条较大曲线。样条由一系列点指定,并通过每一个指定的点。由于基数样条平滑地穿过组中的每一个点(不出现尖角),因而它比用直线连接创建的路径更精确。下面是分别使用两种方法创建的图形,一个使用基数样条,一个使用直线。
   (3) 持久路径对象 Persistent Path Objects
GDI 中,路径属于设备描述表( DC ),画完后路径就会被破坏。在 GDI+ 中,绘图工作由 Graphics 对象来完成,你可以创建几个与 Graphics 分开的路径对象,绘图操作时路径对象不被破环,这样你就可以多次使用同一个路径对象画路径了。
   (4 变形和矩阵对象 Transformations Matrix Object
GDI+ 提供了矩阵对象,一个非常强大的工具,使得编写图形的旋转、平移、缩放代码变得非常容易。一个矩阵对象总是和一个图形变换对相联系起来,比方说,路径对象( PATH )有一个 Transform 方法,它的一个参数能够接受矩阵对象的地址,每次路径绘制时,它能够根据变换矩阵绘制。下面的图形是一个图形变换前后的例子,变换按照先缩放后旋转完成。
   (5 可伸缩区域 Scalable Regions
   GDI+ 在区域( regions )方面对 GDI 进行了改进 , GDI 中, Regions 存储在设备坐标中,对 Regions 唯一可进行图形变换的操作就是对区域进行平移。而 GDI+ 用世界坐标存储区域 (Regions), 允许对区域进行任何图形变换(譬如如图所示的缩放),图形变换以变换矩阵存储,下面例子是一个区域变换前后的例子(缩放、旋转、平移)
  ( 6 Alpha Blending (混合)
  你可能会注意到上面显示的图形,红色未平移区域与变换后区域有一部分交叉区域,这一部分形成的梦幻效果就是由 GDI+ 支持的 Alpha Blending (混合)实现的 , 利用 alpha 融合,你可以指定填充颜色的透明度,透明颜色与背景色相互融合,填充色越透明,背景色显示越清晰,下图所示的四个椭圆被填充了同样的颜色,但由于拥有不同的透明度而呈现不同的显示效果。
  ( 7 多种图像格式支持 .
  图像在图形界面程序中占有举足轻重的地位, GDI +除了支持 BMP GDI 支持的图形格式外,还支持 JPEG Joint Photographic Experts Group )、 GIF Graphics Interchange Format )、 PNG Exchangeable Image File )、 TIFF Tag Image File Format )等图像格式,你可以直接在程序中使用这些图片文件,而无需考虑它们所用压缩算法。
  ( 8 )其它。
   GDI+ 还将支持其它技术,譬如重新着色、颜色校正、元数据、图形容器,也许这些功能我们会在将来的 WindowsXP 或者 Microsoft VisualStudio Net 中看到 .
3.
编程模式的改变 Device Contexts (设备描述表) , Handles (句柄) , Graphics Objects (图形对象)
  如果你曾经使用过 GDI 编写过应用程序,你肯定对设备描述表( DC )的概念非常熟悉,设备描述表是 Windows 使用的一个数据结构,用于存储具体设备能力和与如何在设备上重绘一些项目的有关属性信息。而且视频设备的设备描述表还与特定的窗口有关。首先你必须获得一个设备描述表句柄,然后在图形绘制时,你把这个句柄作为一个参数传递给 GDI 图形绘制函数。当然你也可以把它传递给获得或设置设备描述表有关属性的函数。
利用 GDI+ 函数,你不必使用句柄或者设备描述表。相反,你可以简单地创建一个图形对象( Graphics ),然后以你熟悉的面向对象的编程方式调用它的方法即可,譬如 myGraphicsObject.DrawLine(parameters) Graphics 对象是 GDI+ 的核心,正如设备描述表是 GDI 的核心一样,设备描述表( DC )和图形对象( Graphics )在不同的环境下扮演着同样的角色,发挥着类似的作用,但是两者也存在着这质的不同。前者使用基于句柄的编程方法而后者使用面向对象的编程方法。
  图形对象和设备对象一样,与屏幕的显示窗口有关,它包含着与项目重绘有关的属性信息(譬如平滑度),然而图形对象并没有像 GDI 那样与 Pen( 画笔 ) Path (路径)、 Image( 图像 ) Font (字体)等搅在一起。在 GDI 中,所有与绘图有关的绘图对象必须选入指定设备描述表中(使用 SelectObject 函数),才能被指定的设备描述表所使用。而在 GDI+ 中,你只需把这些绘图对象作为一个参数传递给图形对象 Graphics 方法调用即可,每一个图形对象所使用的绘图工具至于它调用方法使用的参数有关,它可以通过参数使用多种 Pen Brush 绘图,而不是与特定的笔和画刷联系在一起。

原文

最大的图像处理圈子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值