01GDI+概述
GDI+指的是.NETFramework4.0中提供二维图形、图像处理等功能,是构成Windows操作系统的一个子系统,它提供了图形图像操作的应用程序编程接口(API)。使用GDI+可以用相同的方式在屏幕或打印机上显示信息,而无须考虑特定显示设备的细节。GDI+类提供用以绘制的方法,这些关的应用程序。GDI+主要用于在窗体上绘制各种图形图像,可以用于绘制各种数据图形、数学仿真等。GDI+可以在窗体程序中产生很多自定义的图形,便于展示各种图形化的数据。
GDI+就好像是一个绘图仪,它可以将已经制作好的图形绘制在指定的模型中,并可以对图形的颜色、线条粗细、位置等进行设置。
创建Graphics对象
Graphics类是GDI+的核心,Graphics对象表示GDI+绘图表面,提供将对象绘制到显示设备的方法。Graphics与特定的设备上下文关联,是用于创建图形图像的对象。Graphics类封装了绘制直线、曲线、图形、图像和文本的方法,是进行一切GDI+操作的基础类。创建Graphics对象有以下3种方法。
在窗体或控件的Paint事件中创建,将其作为PaintEventArgs的一部分。在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。
“
在Paint事件中创建Graphics对象。代码如下:
privatevoidForm1_Paint(objectsender,PaintEventArgse)//窗体的Paint事件{Graphicsg=e.Graphics;//创建Graphics对象}
调用控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示控件或窗体的绘图画面。如果在已存在的窗体或控件上绘图,应该使用此方法。
“
在窗体的Load事件中,通过CreateGraphics方法创建Graphics对象。代码如下:
privatevoidForm1_Load(objectsender,EventArgse)//窗体的Load事件{Graphicsg;//声明一个Graphics对象//使用CreateGraphics方法创建Graphics对象g=this.CreateGraphics();}
由从Image继承的任何对象创建Graphics对象,此方法在需要更改已存在的图像时十分有用。
“
在窗体的Load事件中,通过FromImage方法创建Graphics对象。
代码如下:
privatevoidForm1_Load(objectsender,EventArgse)//窗体的Load事件{Bitmapmbit=newBitmap(
"C:\ls.bmp");//实例化Bitmap类//通过FromImage方法创建Graphics对象Graphicsg=Graphics.FromImage(mbit);}创建Pen对象
Pen类主要用于绘制线条,或者线条组合成的其他几何形状。Pen类的构造函数如下。
语法如下:
publicPen(Colorcolor,floatwidth)
color::设置Pen的颜色。
width:设置Pen的宽度。
“
创建一个Pen对象,使其颜色为蓝色,宽度为2。
代码如下:
Penmypen1=newPen(Color.Blue,2);//实例化一个Pen类,并设置其颜色和宽度
创建Brush对象
Brush类主要用于填充几何图形,如将正方形和圆形填充为其他颜色。Brush类是一个抽象基类,不能进行实例化。若要创建一个画笔对象,需使用从Brush派生出的类,如SolidBrush、HatchBrush等,下面对这些派生出的类进行详细介绍。
1SolidBrush类
SolidBrush类定义单色画笔,画笔用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。
语法如下:
publicSolidBrush(Colorcolor)
color:表示此画笔的颜色。
说明
当不再需要返回Graphics时,必须通过调用其Dispose方法来释放它。Graphics只在当前窗口消息期间有效。
“
创建一个Windows应用程序,通过Brush对象将绘制的矩形填充为红色。代码如下:
privatevoidbutton1_Click(objectsender,EventArgse){Graphicsghs=this.CreateGraphics();//创建Graphics对象Brushmybs=newSolidBrush(Color.Red);//使用SolidBrush类创建一个Brush对象Rectanglert=newRectangle(10,10,,);//绘制一个矩形ghs.FillRectangle(mybs,rt);//用Brush填充Rectangle}
2HatchBrush类
HatchBrush类提供了一种特定样式的图形,用来制作填满整个封闭区域的绘图效果。HatchBrush类位于System.Drawing.Drawing2D命名空间下。
语法如下:
publicHatchBrush(HatchStylehatchstyle.ColorforeColor)
hatchstyle:HatchStyle值之一,表示此HatchBrush所绘制的图案。
foreColor:Color结构,它表示此HatchBrush所绘制线条的颜色。
“
创建一个Windows应用程序,利用HatchStyle值创建5个长条图示。代码如下:
privatevoidbutton1_Click(objectsender,EventArgse){Graphicsghs=this.CreateGraphics();//创建Graphics对象for(inti=1;i6:i++)//使用for循环{HatchStylehs=(HatchStyle)(5+i);//设置HatchStyle值HatchBrushhb=newHatchBrush(hs,Color.White);//实例化HatchBrush类Rectanglert=newRectangle(10,50*i,50*i,50)//根据i值绘制矩形ghs.FillRestangle(hb,rtl);//填充矩形}}
3LinerGradientBrush类
LinerGradientBrush类提供一种渐变色彩的特效,填满图形的内部区域。
语法如下:
publicLinerGradientBrush(Pointpoint1,Pointpoint2,Colorcolor1,Colorcolor2)
“
语法中的参数说明如表1所示。
表1参数说明
说明
在使用LinerGradientBrush类时,必须在命名空间中添加System.Drawing.Drawing2D。
“
创建一个Windows应用程序,通过LinerGradientBrush类绘制线形渐变图形。代码如下:
privatevoidbutton1_Click(objectsender,EventArgse){Pointp1=newPoint(,);//实例化两个Point类Pointp2=newPoint(,);//实例化LinerGradientBrush类,设置其使用黑色和白色进行渐变LinearGradientBrushIgb=newLinearGradientBrush(p1,p2,Color.Black,Color.White);Graphicsghs=this.CreateGraphics();//实例化Graphics类//设置WrapMode属性指示该LinearGradientBrush的环绕模式lgb.WrapMode=WrapMode.TileFlipX;ghs.FillRectangle(lgb,15,15,,);//填充绘制矩形}
技术群:需要进技术群的添加小编