GDI+编程基础1

来源:互联网 发布:linux运维最佳实践pdf 编辑:程序博客网 时间:2024/05/16 15:27

本文参考:《精通GDI+编程》

一、GDI是什么

GDI+是Windows操作系统的图像引擎,负责在屏幕和打印机上显示和打印消息。

          是一个应用编程接口,通过一组C++类来提供接口的功能。

          是早期图形设备接口GDI的继任者。

二、GDI体系

GDI+的工作原理及其在操作系统中所扮演的角色,如下图

GDI+所包含的内容:

1、二位几何图形的处理

矢量图形由图元(如直线、曲线和轮廓等)组成,图元由坐标中的一组点来指定。

例如:一个矩形可用一个给出其左上角位置的点和一对给出其宽度、高度的数字来指定。

GDI+的

Rect(矩形)类用于存储矩形的位置和尺寸;

Pen(画笔)类存储线条颜色、线宽和线条风格的信息;

Graphics(图形)类用于绘制直线、矩形及其他图形;

Brush(画刷)类存储用颜色图案来填充闭合图形和路径的方法。

2、显示图像

某些图像难以或不可能使用矢量图形技术来表示。

例如:一幅包含一个拥挤的棒球场的高分辨率图形就很难用矢量技术来创建。

这种类型的图像一般都存储为位图,位图是代表屏幕上单个点的颜色的数字阵列。

CachedBitmap(缓存位图)类就是一个用于在内存中存储位图以便快速访问与显示位图。

3、排版

排版与使用各种各样的字体、尺寸和风格显示的文本有关。

GDI+提供文本的反锯齿(AntiAlias)输出,使得在LCD屏幕上绘制文本时文本的外观更加光滑。

三、GDI+新特性

1、渐变画刷

画刷是用来填充控件、窗口和区域的一个GDI对象。

GDI+技术的特殊画刷分为两种:

2、独立的路径对象(Path Objects)

路径是可以被填充、被画出轮廓或同时画出轮廓并填充的一个或多个图形。

在GDI中,路径是设备环境的一个对象,在BeginPath函数和EndPath甬数之间进行绘图时,绘图的信息自动存入路径信息。这些信息在下次使用BeginPath后便被新的路径信息覆盖,也就是说GDI中的路径信息是惟一并且不断改变的。在GDl+中,绘图是由图形对象(Graphics Object)来完成的,并且可以创建多个图形对象进行绘图,多个图形对象产生的路径信息是相对独立的,而且不会被新的绘图操作所覆盖。

3、矩阵对象(Matrix Object)

 GDI+提供了矩阵对象来使图形在变形(旋转及平移等)时做到简单且效果平滑。矩阵对象存储了图形在变化过程中的位置信息。使用矩阵除了可以对坐标位置信息进行变换以外,还可以对色彩的空间信息进行变换。在GDl+cP通过矩阵运算,可以完成包含投射变换在内的所有仿射变换。

4.Alpha通道合成运算(Alpha Blending)
  Alpha Blending是图形处理中最常见的一种运算方法。在GDI+中.Alpha Blending不仅运用在图片的合成方面,也体现在画笔、画刷与日标图形区域之间的合成运算中。图2·3演示了这种合成运算,从图中可以看出,青色方块后面的红色椭圆依稀可见。这种效果在GDI中实现起来有困难,但在GDl+中这种效果实现起来则相当简单。另外,以前常常提到的图片的淡入淡出显示有了一个最简单的解决方法Alpha Blending。在两幅图片重叠显示时,我们可以设置硅示图片的透明度来合成图片,真正做到透明。

    5.多格式图片支持
    GDI+提供了对各种图片的打印、存储功能。通过GDI+,我们能够在编程中直接将一幅BMP文件存储成JPG或是其他格式的图片文件,再也不用操心具体的存储方法了。GDI+所支持的文件格式有:BMP、GIF、JPEG、EXIF、PNG、TIFF、JCON、WMF及EMF。

    GDI+的所有新特色给程序员提供了一种简清的方法柬完成在GDI qJ需要经过繁琐的过程才能完成的编程T作。从某种意义E来说.GDI+是对使用GDI编程的程序员的一种解脱。