第一章.C#GDI+基础

2 篇文章 3 订阅

一、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 空间的坐标的 5x5 矩阵。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+图形程序设计》)

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

It&code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值