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);
         }
  }

 

 

 

 

 

 

 

 

 

 

 

posted @ 2010-12-01 15:33  男儿当自强IT  阅读(1452)  评论(0编辑  收藏  举报