代码改变世界

GDI+与图形图像

2010-04-01 20:56  Eric.Hu  阅读(1518)  评论(0编辑  收藏  举报

GDI+已经完全替代了GDI,目前是在Windows应用程序中以编程方式呈现图形的唯一方法。也可以在设计时使用图像编辑器来创建图形以便在应用程序中使用。虽然在WEB表单中,不能直接使用GDI+,但可以通过WEB服务器的Image空间来显示图形图像。

GDI+可以使用用户创建图形,绘制文本以及将图形图像作为对象进行操作 。使用GDI+创建图形图像需要先创建Graphics对象,然后才可以使用GDI+绘制线条,形状,呈现文本或显示操作图像。步骤如下:

 

  1. 创建Graphics对象
  2. 使用Graphics对象绘制线条形状,呈现文本,显示与操作图形图像

 

首先,创建Graphics对象,可以由三种方法创建:

 

  1. 窗体或控件的Paint事件中的PaintEventArgs,可以接受对图形图像对象的引用。在为控件创建绘制代码时,通常会使用该方法获得对图形图像对象的引用。具体代码如下:
    private void Form1_Paint(object sender,PaintEventArgs e)
    {
        Graphics myg;
        myg
    =e.Graphics;
    }

     

  2. 调用某控件或窗体的CreateGraphics方法来获得对Graphics对象的引用,该对象表示控件或窗体的绘图表面。如果想要在已存在的窗体或控件上绘图,可以使用该方法,具体代码如下:
    private void button1_Click(object sender,EventArgs e)
    {
        Graphics myg;
        myg
    =this.CreateGraphics();
    }

     

  3. 从继承自“图像”的任何对象创建Graphics对象,此方法在更改已存在的图像时非常有用,具体代码如下:
    Bitmap mybit=new Bitmap(@"d:\mypicture.bmp");
    Graphics myg
    =Graphics.FormImage(mybit);
     
操作:绘制,操作形状与图像

Graphics对象创建以后,就可以利用它来绘制线条,形状,文本,显示与操作图像。在操作Graphics对象时需要了解一下以下类和结构:

Font类:提供呈现文本时,需要使用什么字体的说明。

Pen类:用于绘制线条,几何图形,勾勒形状轮廓。

Brush类:用于填充图形区域。

Color结构:表示要显示的不同颜色。 

 简要说明:

Pen:可以绘制线条,曲线,几何图形,勾勒图形轮廓等,创建笔的具体代码如下:

Pen mypen1 = new Pen(Color.Red);
Pen mypen2 
= new Pen(Color.Green, 3);
Pen mypen3 
= new Pen(myBrushPen);

Graphics myg 
=new this.CreateGraphis() ;
myg.GrawLine(mypen1,
1,1,100,100);             //以红色的笔绘制起点为(1,1),终点为(100,100)的直线

 

 

画笔:所有画笔都是从Brush类继承的,Brush是抽象类,不能被实例化。常用的画笔类有:

 

  1. SolidBrush:画笔的最简单形式,它用纯色进行绘制。
  2. LinearGradientBrush:使用两种颜色的渐变色进行绘制。
  3. HatchBrush:与SolidBrush相似,但可以从大量预设的图案中选择要使用的图案,而不是纯色。
  4. TextureBrush:使用纹理进行绘制
  5. PathGradientBrush:基于开发人员定义的唯一路径,使用复杂的混合色渐变进行绘制。

 

颜色:表示形式有以下几种形式:

 

Color mycolor1 = Color.Red;

Color mycolor2 
= Color.FromArgb(20,20,156);       //利用红绿蓝混合来产生不同的颜色,每种颜色的取值范围是0~255

Color mycolor3 
= Color.FromArgb(127,20,20,156);      //127表示Alpha透明度

 

 

  

 绘制线条与几何图形

Graphics对象提供了绘制各种线条和形状的方法,可以用纯色,透明色,用户自定义的渐变或图像纹理来显示简单或复杂的图形。绘制图形常用的方法及意义如下: 

 

  1. Graphics.DrawLine方法:绘制直线,需要指定直线的起点和结束点坐标。
  2. Graphics.DrawEllipse方法:绘制椭圆,需要指定椭园左上角X坐标,Y坐标,椭圆的边框的高度和宽度
  3. Graphics.FillEllipse方法:绘制填充椭圆,需要一个或多对象作为参数,如Rectangle对象
  4. Graphics.DrawRectangle方法:绘制矩形,需要一个或多个对象作为参数,如Rectangle对象,也可以指定矩形的左上角X坐标,Y坐标,矩形边框的宽度和高度
  5. Graphics.FillRectangle方法:绘制填充矩形,需要一个或多个对象作为参数,如Rectangle对象
  6. Graphics.DrawPolygon方法:绘制复杂多边形,需要一个坐标数组
  7. Graphics.FillPolygon方法:绘制填充复杂多边形,需要一个坐标数组
  8. Graphics.DrawPie方法:绘制扇形,需要扇形所在的矩形域即一个Rectangle对象,起始初始角和终止角
  9. Graphics.FillPie方法:绘制填充扇形,需要扇形所在的矩形域即一个Rectangle对象,起始初始角和终止角

 

 

 

示例代码: 

 1.  绘制几何图形:/Files/long-gengyun/DrawingShapes.rar