第一章.C#GDI+基础

  • Post author:
  • Post category:其他




一、GDI+基础


1、定义:


GDI+是一个库,它提供了一个接口,此接口允许程序员编写与打印机、监视器或文件等图形设备进行交互的Windows和web图形应用程序。


2、什么是GDI+


是一组C++类,位于一个名为Gdiplus.dll的类库中。


3、受控代码与不受控代码


在.net framework中,编写的受公共语言运行时(CLR)控制的代码称为受控代码,而不受其控制的称为不受控代码;


4、在.NET Framework库中提供的受控GDI+类是在System.Drawing名称空间以及它的五个子名称空间中定义的,这些子名称空间为

:System.Drawing.Design,System.Drawing.Drawing2D,System.Drawing.Imaging,System.Drawing.Printing和System.Drawing.Text。


5、GDI+的功能分为五类类:二维矢量图形、图形处理、版式、打印和设计。



6、在GDI+中,设备上下文的概念和设备上下文句柄被Graphics对象取代。Graphics类提供了绘制不同图形对象的方法和属性



例如:

首先需要一个与窗体关联的Graphics对象,通常在窗体的Form_Paint事件或者OnPaint方法中可以找到此对象。在得到了一个与窗体相关的Graphics对象后,可以调用它的绘制和填充方法来绘制和填充不同的图形对象,如直线、矩形和曲线等。

//通过使用PaintEventArgs.Graphics得到一个与窗体相关联的Graphics对象。然后,创建一个Pen对象和直线的起始点及结束点作为参数,在窗体上绘制一条直线。
private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen pn = new Pen(Color.Red, 3);
            g.DrawLine(pn, 20, 20, 200, 200);
        }

7、System.Drawing名称空间

描述
Bitmap 该类封装了一个位图,位图是以像素格式存储的图像
Brush 该类是一个不能直接实例化的抽象基类,提供了它的派生画笔类所使用的功能,并且表示一个画笔图形对象,画笔用于采用特定的颜色填充图形的内部
Brushes 该类使用所有的标准颜色来表示画笔,对于每种标准的颜色,这个类都有一个静态成员与之相对应,例如,Brushes.Blue表示一个蓝色的画笔
ColorConverter 该类提供了将颜色从一种类型转换为另一种类型的方法和属性
ColorTranslator 该类提供了将颜色从一种类型转换为另一种类型的各种方法
Font 该类提供了定义字体文本的格式、名称、外观、字号和样式等的成员,还提供了从窗口句柄将Font对象创建到设备上下文或窗口句柄的方法
FontConverter 该类提供了将字体从一种类型转换为另一种类型的成员
FontFamily 该类定义了一组具有相似的基本设计但在样式上有所不同的字体
Graphics 该类封装了绘制面的关键类,与许多其他的类一起提供了绘制和填充图形对象的成员
lcon 该类表示一个Windows图标,提供了定义图标的大小、宽度和高度的成员
IconCOnverter 该类提供了将Icon对象从一种类型装换为另一种类型的成员
Image 该类提供了定义图像的大小、高度、宽度和格式的成员,还提供了从文件、窗口句柄或创建Image对象的方法,以及保存、旋转和翻转图像的方法,其还是一个抽象的基类,通过他的派生类(Bitmap、Icon和Metafile等)可以使用它的功能
ImageAnimator 该类提供了启动和停止动画的方法,以及更新具有基于时间的帧的图像的帧的方法
ImageConverter 该类提供了将Image对象从一中类型转换为另一种类型的成员
ImageFormatConverter 该类定义了可以用将图像从一种格式转换为另一种格式的成员
pen 该类定义了一个具有指定颜色和宽度的钢笔,钢笔用于绘制直线、矩形、曲线或椭圆等图形对象
PointConverter 该类定义了可以用来将Point对象从一种类型转换为另一种类型的成员
RectangleConverter 该类定义了可以用Rectangle对象从一种类型转换为另一种类型的成员
Region 该类在GDI+中表示一个区域,此区域描述了一个图形的内部
SizeCOnverter 该类定义了将字号从一种类型转换为另一种类型的成员
SolidBrush 该类继承自Brush类,这个类定义了单一颜色的实心画笔
StringFormat 该类提供了定义文本格式(包括对齐方式、去首尾空白和行间距、显示处理以及OpenType特性等)的成员
SystemBrushes 该类定义了静态的属性,每个属性都是一个具有Highlight、HighlightText或ActiveBorder等,window优先显示元素的SolidBrush对象
SystemIcons 该类定义了Windows系统图标的静态属性
SystemPens 该类定义了静态的属性,每个属性都是一个具有Windows显示元素的颜色和宽度为1的Pen对象
TextureBrush 该类继承自Brush类,定义了一个将图像作为纹理的画笔
ToolboxBitmapAttribute 该类定义与特定组件关联的图像


8、System.Drawing.Design 名称空间


从其名字可以看出 ,System.Drawing.Design 名称空间提供了开发设计时控件 ( 例如自定义的工具箱项 、图形编辑器和类型转换器等) 的附加功能 。表 1.2 中简要地描述了System.Drawing.Design 名称空间中的类 。除表 1.2 中介绍的类之外,System.Drawing.Design 名称空间还定义了一些接口 、委托 和枚举 。表 1.3 列出了在此名称空间中定义的接口 。


表 1.2 System.Drawing.Design 类

描述
BitmapEditor 该类是使用 “属性” 窗口选择位图的用户界面
CategoryN田neCollection 该类是类别的集合
FontEditor 该类是选择和配置字体的 UI
ImageEditor 该类是在属性窗口中选择图像的UI
PaintValueEventArgs 该类提供了 PaintValue 事件的数据
PropertyValue UIItem 该类提供了有关属性的属性值 UI 的信息
ToolboxComponentsCreatedEventArgs 该类提供了 ComponentsCreated 事件的数据 ,此事件在向工具箱添加组件时发生
ToolboxComponentsCreatingEventArgs 该类提供了 ComponentsCreating 事件的数据 ,此事件在向工具箱添加组件时发生
Toolboxltem 该类提供了工具箱项的一个基本的实现
ToolboxltemCollection 该类是工具箱 页的集合
UITypeEditor 该类提供了可以用来设计值编辑器的基类


9 System.Drawing.Drawing2D 名称空间


System.Drawing.Drawing2D 名称空间定义了开发高级的二维和矢量图形应用程序的功 能。此名称雪间提供了图形容器 、混合、高级画笔 、矩阵和变形等的类 。表 1.4 简要地描 述了这些类 。除表 1.4 中介绍的类之外System.Drawing.Drawing2D 名称空间还提供了许多枚举 。 我们将在后面章节的例子中使用这些枚举时再对其进行介绍 。

表 1.4 System.Drawing.Drawing2D 类

描 述
AdjustableArrowCap 该类表示一个可调整的箭头形状的线帽 ,提供了定义要填写的属性以及设置箭头线帽的高度和 宽度的成员
Blend 渐变色混合用于提供图形内部的光滑和阴影 ,混合图案包含系数和图案数组 ,这些数组定义了开 始颜色和结束颜色的位置以及颜色的百分比 c Blend 类定义了 个混合图案 ,其使用 Linear GradientBrush 来填充图形 。Factors 和 Positions 属性分别表示混合系数的数组和渐变位置的数组
ColorBlend 该类定义了在多色渐变中混合的颜色 ,Color 和 Position 属性分别表示颜色数组和位置数组
CustomLineCap 该类封装了一个定制的 、用户自定义的线帽
GraphicsContainer 该类表示图形容器的数据
Graphics.BeginContainer 以及通过对 Graphics.End- Container 的调用创建的
GraphicsPath 在 GDI+ 中,路径是 系列相互连接的直线和曲线 。这个类提供了定义路径的填充模式的属性 和其他属性 。该类还定义了向路径添加图形的方法 。例如AddArc 方法和 AddCurve 方法将分 别向路径添加困弧和曲线 z 一些相关的方法如 Wrap、Transform 、Reverse 和 Reset 等
GraphicsPathlterator 路径可以包含子路径 。该类提供了找到子路径的个数并通过子路径进行迭代的能力 。Count 和SubpathCount 分别返回了路径中的点的个数和子路径的个数
Graphics State 该类表示 Graphics 对象的状态
HatchBrush 阴影画笔是具有阴影样式 、前景色和背景色的画笔 。该类表示 GDI+ 中的阴影画笔
LinearGradientBrush 该类表示使用线性渐变的画笔
Matrix 该类封装了一个表示几何变形的 3×3 矩阵。该类定义了反转 、增加、重置 、旋转、缩放、剪切 和转化矩阵的方法
PathData 该类包含形式为组成路径的点和类型的数据 。这个类的 Points 属性表示 个点的数组 ,Types属性表示路径中的点的类型
PathGradientBrush 该类表示使用图形路径的画笔 。PathGradientBrush 包含混合 、包装、缩放和变形的方法和属性 。 该类封装 r 个使用渐变色填充
GraphicsPath 对象的内部的 Brush 对象
RegionData 该类表示由 Region 对象存储的数据 。这个类的 Data 属性表示形式为字节数组的数据


10 System.Drawing.Imaging 名称空间


System.Drawing 名称空间中定义了基本的图像处理功能 。System.Drawing.Imaging 名 称空间则提供了高级图像处理的功能 。在应用程序使用 System.Drawing.Imaging 名称空间 中的类之前,必须先引用此名称空间 。

表 1.5 简要地描述了 System.Drawing.Imaging 名称空间的类 。这些类及其用法将在第 8章中进行介绍。

表 1.5 System.Drawing.Imaging 类

描述
BitmapData 通常我们不希望加载和刷新位图的所有数据 ,这是因为渲染每个像素不仅是一个非常慢的过程 , 而且会消耗很多的系统资源 。由于有BitmapData 类以及它的LockBits 和 UnlockBits 方法的帮助 , 我们可以锁定内存中所需的位图数据并对其进行操作 ,而不用对所有的数据进行操作
ColorMap 该类定义了颜色转换的映射 。ColorMap 由ImageAttributes 类使用
ColorMatrix 该类定义了包含 ARGB 空间的坐标的 5×5 矩阵。ColorMatrix 由geAttributes 类使用
ColorPalette 该类定义了 个组成颜色调色板的颜色的数组
ColorPalette 由ImageAttribut的类使用 Encoder 该类表示一个编码器 ,此编码器表示一个标识图像编码器参数的全局惟→标识符 <GUID )。
Encoder 由EncoderPararneter类使用Encoder Parameter该类是一个编码器参数 ,用于设置特定种类的图像的值 。该类在 Save 方法中是与EncoderParameter写 一起使用的
Encoder Parameters 该类是 Encoder Parameter 对象的数组
FrameDimension 该类提供了获取图像的帧尺寸的属性
ImageAttributes 该类包含了有关在渲染期间如何操作图像颜色的信息 ( 详细信息请参见第 7章)
ImageCodecinfo 该类检索有关己安装的图像编解码器的信息
ImageFormat 该类指定了图像的格式
Metafile 该类定义了 个图形图元文件 ,此文件包含形式为可以记录(构造) 和回放 (显示) 的记录的 图形操作


11 System.Drawing.Printing 名称空间


System.Drawing.Printing 名称空间定义了 GDI+ 中与打印相关的类和类型 。在应用程序 使用此名称空间的类之前 ,必须先包含这个名称空间 。

表 1.6 简要地讨论了 System.Drawing.Printing 名称空间所提供的类 。这些类及其用法 将在第 11 章中进行介绍。


12 System.Drawing.Text 名称空间


System.Drawing.Text 名称空间只包含一些与高级 GDI+ 版式功能相关的类 。在应用 程序使用此名称空间的类之前 ,必须先包含这个名称空间 。表 1.7 描述了这些类 :在第 5 章中将对这些类进行详细的介绍 。

(说明:以上内容来自:《GDI+图形程序设计》)



版权声明:本文为xunminwei0021原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。