一切福田,不離方寸,從心而覓,感無不通。

C#GDI+编程基础(一)

GDI+存在的意义:将编程与具体硬件实现细节分开。

GDI+步骤:获取画布,绘制图像、处理图像

 

命名空间:

System.Drawing命名空间提供对GDI+基本图形功能的访问

System.Drawing.Drawing2D:提供高级的二维和矢量图形功能

System.Drawing.Imaging:命名空间提供高级GDI+图像处理功能

System.Drawing.Text:提供高级GDI+排班功能

System.Drawing.Pringting:提供打印相关服务

System.Drawing.Design:扩展设计时,用户界面逻辑和绘制的类。用于扩展,自定义。

 

画图工具:

 

Graphics(画布):类封装一个GDI+绘图图面,提供将对象绘制到显示设备的方法,Graphics与特定的设备上下文关联。画图方法都被包括在Graphics类中,在画任何对象之前都需要创建一个Graphics类实例作为画布。

创建画布 (三种方法):

  1. 利用控件或窗体的Paint事件中的PainEventArgs。

适用场景:为控件创建绘制代码。

示例:

//窗体的Paint事件的响应方法

private void Form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

}

//直接重载控件或窗体的OnPaint方法:

protected override void OnPaint(PaintEventArgs e)

{

Graphics g = e.Graphics;

}

注意:Paint事件在重绘控件时发生。

  1. 调用某控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。

适用场景:在已存在的窗体或控件上绘图

Graphics g = this.CreateGraphics();

 

  1. 由从Image继承的任何对象创建Graphics对象。

适用场景: 需要更改已存在的图像

Image img = Image.FromFile(@"IMG\graph.jpg");

Graphics g = Graphics.FromImage(img);

 

方法成员:

名称 说明
DrawArc 画弧。
DrawBezier 画立体的贝尔塞曲线。
DrawBeziers 画连续立体的贝尔塞曲线。
DrawClosedCurve 画闭合曲线。
DrawCurve 画曲线。
DrawEllipse 画椭圆。
DrawImage 画图像。
DrawLine 画线。
DrawPath 通过路径画线和曲线。
DrawPie 画饼形。
DrawPolygon 画多边形。
DrawRectangle 画矩形。
DrawString 绘制文字。
FillEllipse 填充椭圆。
FillPath 填充路径。
FillPie 填充饼图。
FillPolygon 填充多边形。
FillRectangle 填充矩形。
FillRectangles 填充矩形组。
FillRegion 填充区域。

 

PEN类(画笔):绘制指定宽度和样式的直线。使用DashStyle属性绘制几种虚线,可以使用各种填充样式(包括纯色和纹理)来填充Pen绘制的直线,填充模式取决于画笔或用作填充对象的纹理。

创建画笔:

//用指定的颜色实例化一只画笔的方法如下:

public Pen(Color);

//用指定的画刷实例化一只画笔的方法如下:

public Pen(Brush);

//用指定的画刷和宽度实例化一只画笔的方法如下:

public Pen(Brush , float);

//用指定的颜色和宽度实例化一只画笔的方法如下:

public Pen(Color, float);

//实例化画笔的语句格式如下:

Pen pn=new Pen(Color.Blue);

//或者

Pen pn=new Pen(Color.Blue,100);

属性成员:

名称 说明
Alignment 获得或者设置画笔的对齐方式。
Brush 获得或者设置画笔的属性。
Color 获得或者设置画笔的颜色。
Width 获得或者设置画笔的宽度。

Brush类(画刷):是一个抽象的基类,因此它不能被实例化,用它的派生类进行实例化一个画刷对象。

 

结构组件:

 

Point类:表示一个具体的点。

创建Point实例:

public Point(int x,int y)

Size类:表示尺寸(像素为单位)。Size结构包含宽度和高度

创建Size实例:

Size s = new Size(Width, Height);

Rectangle结构:一个构造函数的参数是X坐标,Y坐标,宽度和高度,另一个构造函数的参数是Point和Size结构,

创建Rectangle实例:

//用指定的位置和大小初始化Rectangle类的新实例。

public Retangle(Point,Size);

public Rectangle(int,int,int,int);

属性成员:

名称 说明
Bottom 底端坐标
Height 矩形高
IsEmpty 测试矩形宽和高是否为0
Left 矩形左边坐标
Location 矩形的位置
Right 矩形右边坐标
Size 矩形尺寸.
Top 矩形顶端坐标
Width 矩形宽
X 矩形左上角顶点X坐标
Y 矩形左上角顶点Y坐标

 

风格组件:

 

Color类(颜色以及透明度):由透明度(A)和三基色(R,G,B)所组成

属性成员:

名称 说明
A 获取此Color结构的alpha分量值,取值(0~255)。
B 获取此Color结构的蓝色分量值,取值(0~255)。
G 获取此Color结构的绿色分量值,取值(0~255)。
R 获取此Color结构的红色分量值,取值(0~255)。
Name 获取此Color结构的名称,这将返回用户定义的颜色的名称或已知颜色的名称(如果该颜色是从某个名称创建的),对于自定义的颜色,将返回RGB值。

静态方法成员:

名称 说明
FromArgb 从四个8位ARGB分量(alpha、红色、绿色和蓝色)值创建Color结构。
FromKnowColor 从指定的预定义颜色创建一个Color结构。
FromName 从预定义颜色的指定名称创建一个Color结构。

获取设置一个具体像素的颜色值示例:

//(1)定义Bitmap

Bitmap myBitmap = new Bitmap("c:\\MyImages\\TestImage.bmp");

//(2)定义一个颜色变量把在指定位置所取得的像素值存入颜色变量中

Color c = new Color();

//获取此Bitmap中指定像素的颜色。

c = myBitmap.GetPixel(10, 10);

//(3)将颜色值分解出单色分量值

int r, g, b;

r = c.R;

g = c.G;

b = c.B;

Font类(字体风格):定义特定文本格式,包括字体、字号和字形属性。

创建Font实例:

//"字体名"为Font的FontFamily的字符串表示形式

public Font(string 字体名, float 字号,FontStyle 字形)//字号和字体为可选项

public Font(string 字体名,float 字号)

属性成员:

名称 说明
Bold 是否为粗体。
FontFamily 字体成员。
Height 字体高。
Italic 是否为斜体。
Name 字体名称。
Size 字体尺寸。
SizeInPoints 获取此 Font对象的字号,以磅为单位。
Strikeout 是否有删除线。
Style 字体类型。
Underline 是否有下划线。
Unit 字体尺寸单位。

 

重要参数:

 

GraphicsPaths(路径):表示一系列连续的线条和曲线。

创建路径:

public GraphicsPath(System.Drawing.PointF[] pts, byte[] types, System.Drawing.Drawing2D.FillMode fillMode)

//fillMode 填充方式 point[] 结构数组 types[] 对应点的类型 枚举PathPointType

 

PathPointType枚举:

名称 说明
Start 路径起点
Bazier 默认贝塞尔曲线
PathTypeMark 遮盖点
DashMode 添加椭圆
PathMarker 路径标记
CloseSubpath 子路径终结点
Bazier3 立体贝塞尔曲线

 

方法成员:

名称 说明
AddArc 添加圆弧
AddBezier 添加立方贝塞尔曲线
AddClosedCurve 添加闭合曲线
AddEllipse 添加椭圆
AddLine 添加线段
AddPath 添加路径,bool参数表示是否将添加路径的第一个图形作为当前路径最后一个图形的子成员
AddPie 添加扇形轮廓
AddPolygon 添加多边形
AddRectangle 添加矩形
AddString 添加字符串
ClearMarkers 清除所有标志
CloseAllFigures 闭合所有开放图形
CloseFigure 闭合当前图形
Reverse 反转数组各点顺序
Reset 清空,并做好接收准备
StartFigure 不闭合当前图形就开始新的图形
GetBounds 获得边界(矩形)
GetLastPoint 获得最后一个点

 

Regions(组合图形):由矩形和路径组成

创建组合图形:

public Region(System.Drawing.Drawing2D.RegionData rgnData)

public Region(System.Drawing.Drawing2D.GraphicsPath path)

public Region(System.Drawing.Rectangle rect)

public Region(System.Drawing.RectangleF rect)

方法成员:

名称 说明
Complement 更新,以包含与参数不相交的部分
Exclude 更新,以仅包含内部以及与参数不想交的部分
Union 更新为与指定参数的并集
Xor 更新为与指定参数的并集与交集的差集
Translate 指定量偏移坐标
Intersect 更新为与指定参数的交集
IsInfinite(g) 测试此region是否在指定g上具有无限内部
MakeEmpty 清空
MakeInfinite 初始化为无限内部

 

from:http://www.cnblogs.com/BLoodMaster/archive/2010/03/20/1690589.html