GDI+概述

GDI+概述GDI 概述 gdi

大家好,欢迎来到IT知识分享网。

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);

方法 说明
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"));

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/144308.html

(0)
上一篇 2025-04-27 17:20
下一篇 2025-04-27 17:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信