GDI+
DGI+的功能包含在System、System.Drawing、System.Drawing.Image、System.Drawing.Draw2D和System.Drawing.Text等名称空间的各个类中。
其中,主要有以下几个类:
Graphics类:封装了GDI+绘图画板,是GDI+绘图中最核心的类;
Brush类:用指定颜色、样式、纹理等来填充封闭的图形;
Pen类:用来画线、多边形、矩形、弧等外围的轮廓部分;
Font类:用来描绘字体的样式;
Color类:用来描绘颜色,可以是透明或半透明的;
位图Bitmap类:用于位图的显示和存储。
一:Graphics类的基本使用:
1:创建Graphics对象
通常有两种方法:(1)通过窗体或控件的Paint事件参数 (2)调用窗体或控件的CreateGraphics方法
2:使用其相应的画线或画形状的方法,如DrawLine()、DrawRectangle()、FillRectangle()等
二:Pen类:
常用构造函数有两个:
(1)创建一个默认宽度为1的黑笔
Pen myPen = new Pen(Color.Black);
(2)创建一个宽度为6的黑笔
Pen myPen = new Pen(Color.Black,6);
使用示例:
private void button1_Click(object sender, EventArgs e)
{
Pen myPen = new Pen(System.Drawing.Color.Blue);
Graphics g = this.CreateGraphics();
g.DrawLine(myPen, 10, 10, 50, 100);
myPen.Dispose();
g.Dispose();
}
三:画刷Brush类:用来填充
GDI+提供了以下几种画刷类来填充内部区域 :
(1)SolidBrush类:单色画刷,在命名空间System.Drawing中定义,其构造函数只有一个,定义如下:
SolidBrush brush1 = new SolidBrush(Color color);
可使用属性Color来修改画刷颜色,例如:brush1.Color = Color.Green;
(2)TextureBrush类:纹理(图像)画刷使用图像填充封闭曲线的内部。
(3)HatchBrush类:阴影画刷是用指定样式、填充线条颜色和背景颜色的画刷。
(4)LinearGradientBrush类:颜色渐变画刷。
使用示例:
private void buttonFill_Click(object sender, EventArgs e)
{ SolidBrush mybrush = new SolidBrush(System.Drawing.Color.Blue);
Graphics g;
g = this.CreateGraphics();
Rectangle fillRect = new Rectangle(150, 10, 100, 100);
g.FillRectangle(mybrush, fillRect);
mybrush.Dispose();
g.Dispose();
}
***Pen与Brush的比较:Pen用来画线或轮廓线,Brush用来填充,画实心的形状。同样画一个矩形,Pen应该用在Graphics类的DrawRectangle方法中,画出来的是一个空心矩形;Brush应该用在Graphics类的FillRectangle方法中,画出来的是一个实心矩形。
四:Font字体类:定义了文字的特定格式,如字体的大小、样式等。常用在显示文字时。
常用构造具有三个参数,分别代表字体名、字体大小和字体样式。如:
Font f=new Font("Times New Roman",20,FontStyle.Bold); //默认单位:pt
如果想制造一种加粗且变斜的字体可以使用以下两句:
Font f1=new Font("Times New Roman",20,FontStyle.Bold);
Font f2=new Font(f1,FontStyle.Italic);
使用示例:
public void DrawStringPointFFormat(PaintEventArgs e)
{
// Create string to draw.
String drawString = "Sample Text";
// Create font and brush.
Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);
// Create point for upper-left corner of drawing.
PointF drawPoint = new PointF(150.0F, 50.0F);
// Set format of string.
StringFormat drawFormat = new StringFormat();
drawFormat.FormatFlags = StringFormatFlags.DirectionVertical;//文字方向
// Draw string to screen.
e.Graphics.DrawString(drawString, drawFont, drawBrush, drawPoint, drawFormat);
}
五:Bitmap位图类:
System.Drawing命名空间中有一个Image类,用来处理图像。但它是一个抽象类,实例化时常使用其三个子类:Bitmap、Metafile(矢量图形)和Icon(图标)。
显示图像示例:
private void button13_Click(object sender, EventArgs e)
{
Bitmap image1 = new Bitmap("test.jpg");
//创建Graphics对象,并调用其DrawImage方法画图
Graphics g = this.CreateGraphics();
g.DrawImage(image1, 10, 150);
}
}