GDI+概述

GDI+概述

GDI(Graphic Device Interface,图像设备接口)是早期Windows操作系统的一个可执行程序,位于C:\Windows\System32文件夹中,文件名为GDI.exe。GDI+(即Graphic Device Interface Plus),是GDI的升级版本,提供了各种丰富的图形图像处理功能,统一在.Net Framework中封装和定义。
在.NET Framework中,GDI+被封装在如下几个命名空间中。
(1)System.Drawing:提供了对GDI+基本图形功能的访问,其中,Graphics类是整个GDI+的核心,能绘制线条、曲线、图形、图像和文本的画面。其他类需要和Graphics类配合使用。在System.Drawing中,常见的类与结构如表9-1所示。
表9-1 GDI+常用的类和结构说明

类和结构说明
Graphics封装一个GDI+绘图图面
Bitmap封装GDI+位图,用于处理由像素数据定义的图像的功能
Brush用于创建画笔对象,以填充图形的内部
Font定义特定的文本格式,包括字体、字号和字形属性
Pen定义用于绘制直线和曲线的钢笔对象
Region指示由矩形和由路径构成的图形形状的内部
SolidFormat定义单色画笔
StringFormat封装文本布局信息、显示操作和OpenType功能
Color表示一种ARGB颜色(alpha、红色、绿色、蓝色)
Point表示在二维平面中定义点的整数x和y坐标的有序对
PointF表示在二维平面中定义点的浮点x和y坐标的有序对
Rectangle存储一组整数,共4个,表示一个矩形的位置和大小
RectangleF存储一组浮点数,共4个,表示一个矩形的位置和大小
Size存储一个有序整数对,通常为矩形的宽度和高度
SizeF存储有序浮点对,通常为矩形的宽度和高度

(2)System.Drawing.Drawing2D:提供了高级的二维和矢量图形功能,主要有梯度型画刷、Matirx类和GraphicsPath类等。
(3)System.Drawing.Imaging:提供了高级GDI+图像处理功能。
(4)System.Drawing.Text:提供了高级GDI+字体和文本排版功能。
Windows操作系统的GDI+服务分为以下3个主要部分
(1)二维矢量图形
矢量图形由图元(如线条、曲线和图形)组成,它们由一系列坐标系统的点集组成。GDI+提供了用于存储这些图元本身信息的类或结构体,也提供了绘制图元的类。例如,Rectangle结构体存储了一个矩形的尺寸位置;Pen类存储线条颜色、线条宽度,以及线条样式等信息;Graphics类提供绘制线条、矩形、路径和其他图形的方法;而Brush类存储了封闭图形内部填充颜色和图案的信息。
(2)图像处理
有些图片很难采用矢量图形表示,这种类型的图像采用位图进行存储,即由表示屏幕上独立点颜色的数字型数组所组成。GDI+中提供了若干种类,可实现快速存取和显示。例如,CachedBitmap类可用于存储一张缓存在内存中的图片。
(3)图文混排
图文混排是文字处理和绘图软件的基本功能,关系到文字以何种字体、尺寸和样式在绘图区域中的具体显示和控制,GDI+为这种复杂的任务提供广泛的支持。

辅助绘图对象

在图像处理中,绘制位置控制对象Point、Size、Rectangle等对象所对应的浮点型类型,这些结构对象的用法与Point、Size和Rectangle相同。
1.Point结构
Point是一种简单的结构,代表着坐标系统中的一个点,由坐标值x和y共同组成。例如,定义一个坐标点p(100,100),程序代码如下:Point p = new Point(100,100);
2.Size结构
Size是一种简单的结构,代表一个矩形区域的尺寸。例如,定义一个宽度为100、高为50的矩形,程序代码如下:Size s = new Size(100,50);
3.Rectangle结构
Rectangle是一种结构,代表一个矩形,常用的属性和方法如表9-2所示。

属性或方法说明
Width矩形区域的宽度
Height矩形区域的高度
Left矩形区域左边框的X坐标
Right矩形区域右边框的X坐标
Top矩形区域左上角的Y坐标
Bottom矩形区域下边框的Y坐标
X矩形区域左上角的X坐标
Y矩形区域左上角的Y坐标
Location矩形区域左上角的X坐标和Y坐标
Size矩形区域的大小
FromLTRB()通过使用4个位置LTRB(左端、顶端、右端、底端)绘制矩形
Inflate()根据指定量放大矩形
Contains()用于定义一个点是否在矩形边框内

例如:定义一个左上角坐标为(10,10)、宽度为100、高度为50的矩形,程序代码如下:Rectangle r = new Rectangle(10,10,100,50);
4.Color结构
颜色是进行图形操作的基本要素,任何一种颜色都可以由四个分量决定,每个分量占据一个字节。
A:Alpha值,即透明度,取值范围为0-255,0为完全透明,255为完全不透明。
R:红色,取值范围为0-255,255为饱和红色。
G:绿色,取值范围为0-255,255为饱和绿色。
B:蓝色,取值范围为0-255,255为饱和蓝色。
Color结构的常用属性和方法如表9-3所示,

属性或方法说明
A只读属性,返回Color类对象字节的Alpha分量
R只读属性,返回Color类对象字节值的红色分量
G只读属性,返回Color类对象字节值的绿色分量
B只读属性,返回Color类对象值的蓝色分量
FromArgb()用于创建基于ARGB的Color结构
FromKnownColor()用于创建已知颜色的Color结构
FromName()通过使用颜色名称来创建Color结构
GetHue()返回Color结构的“色度-饱和度-亮度“值
ToArgb()返回32位ARGB整数值
ToKnownColor()返回一个基于某个Color结构的已知颜色值

获取Color的使用方法可以根据实际应用进行选择。例如,定义一个颜色,其ARGB分量的值分别为120,255,0,0,合起来表示带透明效果的红色,程序代码如下:Color c = Color.FromArgb(120,255,0,0);
5.Font类
用于指示绘制过程中所使用的字体,Font类常用属性如表9-4所示。

属性说明
Bold只读属性,返回字体是否加粗
Height只读属性,返回字体行高
Italic返回字体是否倾斜
Name返回字体名称
Strikeout返回字体是否有删除线
Underline返回字体是否有下划线
Unit返回字体单位
Size返回字体的尺寸
SizeInPoints返回以Point为单位的字体大小
Style返回字体样式

获取Font对象主要采用Font的多种构造方法。例如,定义一个宋体20号的字体,程序代码如下:Font font = new Font("宋体”,20);

6.Graphics类
要进行图形处理,必须首先创建Graphics对象,然后才能利用它进行各种画图操作。Graphics对象的常用方法如表9-5所示。

方法说明
DrawLine()绘制直线
DrawLines()一次绘制多条直线
DrawRectangle()绘制矩形
DrawRectangles()一次绘制多个矩形
DrawPolygon()绘制多边形
FillPolygon()填充多边形封闭区域
DrawCurve()绘制自定义曲线
DrawClosedCurve()绘制封闭曲线
DrawBezier()绘制贝塞尔曲线
DrawBeziers()绘制多个贝塞尔曲线
DrawEllipse()绘制椭圆
FillEllipse()填充椭圆
DrawImage()绘制图像
DrawString()绘制文本

创建Graphics对象的一般有两种形式
(1)用CreateGraphics方法创建Graphics对象。例如:Graphics g1 = this.CreateGraphics();
(2)从Image创建Graphics对象。例如:Graphics g2 = Graphics.FromImage(Bitmap.FromFile(@"D:\1.jpg"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值