C#所有的GDI+的函数都保存在:System.Drawing.dll程序集中。
我们在进行GDI编程的时候先要添加这个System.Drawing.dll的引用。
这个程序集里面主要的绘图的命名空间有以下这些:
System.Drawing;
System.Drawing.Text;
System.Drawing.Printing;
System.Drawing.Imaging;
System.Drawing.Drawing2D;
System.Drawing.Design;
Graphics类:
这个类相当于一张画布,可以调用绘图方法在这上面绘画。
这个对象的建立方法主要有3种:
1,通过窗体或者控件的Paint方法来获得者个对象。
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g=e.Graphics;
}
2,通过窗体获得控件的CreateGraphics这个方法来创建这个对象。
Graphics g=this.CreateGraphics();
3,使用Image类的派生类来创建这个对象。
Bitmap b=new Bitmap("ddd.bmp");
Graphics g=Graphics.FromImage(b);
Pen类:
顾名思义,这个就是画画的笔了。
它可以用来绘制线条,多边形,曲线,等几何图形。
Pen 对象的主要属性:宽度、样式、颜色。
1、 Pen 对象的创建(4种形式)
Pen p1=new Pen(Color);//创建某一颜色的Pen 对象
Pen p2=new Pen(Brush);//创建某一刷子样式的Pen 对象
Pen p3=new Pen(Brush,float);//创建某一刷子样式并具有相应宽度的的Pen 对象
Pen p4=new Pen(Color,float);//创建某一颜色和相应宽度的Pen 对象
例子:在窗体上面画一个红色的矩形:
Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Red, 1);
Rectangle rect = new Rectangle(50, 50, 100, 50);//矩形,x轴50,y轴50,宽度100,高度50.
g.DrawRectangle(p, rect);
关于Pen类里面的一些属性你可以自己去尝试做一些demo就能了解了。
下面我们要说的一个类是:
Brush(画刷)类:
这是一个抽象类不能实例化,只能使用它的派生类:
SolidBrush 单色画笔
HatchBrush 背景图案画笔
LinearGradientBrush 颜色渐变画笔
PathGradientBrush 使用路径及复杂的混色渐变画刷
TextureBrush 纹理画刷,通过一张图片来画。
1,SolidBrush 使用单色画笔,用红色填充一个矩形:
Graphics g = this.CreateGraphics();
SolidBrush ff = new SolidBrush(Color.Red);
Rectangle rect = new Rectangle(50, 50, 100, 50);
g.FillRectangle(ff, rect);
2,HatchBrush 背景图案画笔,画一个具有不同纹理的背景图案:
Graphics g = this.CreateGraphics();
HatchBrush brush = new HatchBrush(HatchStyle.Max,Color.Black,Color.Blue);
Rectangle rect = new Rectangle(50, 50, 100, 50);
g.FillRectangle(brush, rect);
3,LinearGradientBrush 颜色渐变画笔
可以给这个画笔指定一个颜色的数组,和颜色位置的数组。这个画笔就会根据这些数组来绘制渐变颜色。
例子1:
Graphics g = this.CreateGraphics();
Rectangle rect = new Rectangle(50, 50, 100, 50);
LinearGradientBrush brush = new LinearGradientBrush(rect,Color.Red,Color.Blue,LinearGradientMode.Vertical);
g.FillRectangle(brush, rect);
例子2:多色渐变的实现
Graphics g = this.CreateGraphics();
Rectangle rect = new Rectangle(50, 50, 100, 50);
LinearGradientBrush brush = new LinearGradientBrush(rect, Color.Red, Color.Blue, LinearGradientMode.Vertical);
Color[] colors = new Color[4];//定义一个颜色数组
colors[0] = Color.Beige;
colors[1] = Color.Blue;
colors[2] = Color.Red;
colors[3] = Color.Yellow;
ColorBlend blend = new ColorBlend();
blend.Positions = new float[] { 0.0f, 0.35f, 0.45f, 1.0f };
blend.Colors = colors;
brush.InterpolationColors = blend;
g.FillRectangle(brush, rect);