01 GDI+概述

C# GDI+绘图基础_控件

GDI+指的是 .NET Framework 4.0 中提供二维图形、图像处理等功能,是构成 Windows 操作系统的 一个子系统,它提供了图形图像操作的应用程序编程接口(API)。使用 GDI+可以用相同的方式在屏幕或打印机上显示信息,而无须考虑特定显示设备的细节。GDI+类提供用以绘制的方法,这些关的应用程序。GDI+主要用于在窗体上绘制各种图形图像,可以用于绘制各种数据图形、数学仿真等。 GDI+可以在窗体程序中产生很多自定义的图形,便于展示各种图形化的数据。

GDI+就好像是一个绘图仪,它可以将已经制作好的图形绘制在指定的模型中,并可以对图形的颜色、线条粗细、位置等进行设置。


创建 Graphics 对象

Graphics 类是GDI+的核心,Graphics对象表示 GDI+绘图表面,提供将对象绘制到显示设备的方法。Graphics 与特定的设备上下文关联,是用于创建图形图像的对象。Graphics 类封装了绘制直线、曲线、图形、图像和文本的方法,是进行一切 GDI+操作的基础类。创建 Graphics 对象有以下3种方法。

C# GDI+绘图基础_实例化_02  在窗体或控件的 Paint 事件中创建,将其作为 PaintEventArgs 的一部分。在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。


【例1】 在 Paint 事件中创建 Graphics对象。代码如下:

private void Form1_Paint(object sender, PaintEventArgs e)    //窗体的 Paint 事件 
{
Graphics g=e.Graphics; //创建 Graphics 对象
}


C# GDI+绘图基础_实例化_02  调用控件或窗体的 CreateGraphics 方法以获取对 Graphics 对象的引用,该对象表示控件或窗体的绘图画面。如果在已存在的窗体或控件上绘图,应该使用此方法。


【例2】 在窗体的 Load 事件中,通过 CreateGraphics 方法创建 Graphics 对象。代码如下:



private void Form1_Load(object sender, EventArgs e)    //窗体的 Load 事件 
{
   Graphics g;                 //声明一个 Graphics 对象
   //使用 CreateGraphics 方法创建 Graphics 对象 
   g = this.CreateGraphics();
}


C# GDI+绘图基础_实例化_02  由从 Image 继承的任何对象创建 Graphics 对象,此方法在需要更改已存在的图像时十分有用。

【例3】在窗体的 Load 事件中,通过 FromImage 方法创建 Graphics 对象。

代码如下:



private void Form1_Load(object sender, EventArgs e)        //窗体的 Load 事件 
{
    Bitmap mbit = new Bitmap(@"C:\ls.bmp");  //实例化 Bitmap 类 
    //通过 FromImage 方法创建 Graphics 对象                     
    Graphics g = Graphics.FromImage(mbit);
}



创建 Pen 对象

Pen 类主要用于绘制线条,或者线条组合成的其他几何形状。Pen 类的构造函数如下。

语法如下:

public Pen(Color color,float width)

C# GDI+绘图基础_实例化_02  color::设置 Pen 的颜色。 

C# GDI+绘图基础_实例化_02  width:设置 Pen 的宽度。

【例4】创建一个 Pen 对象,使其颜色为蓝色,宽度为2。

代码如下:

Pen mypen1 = new Pen(Color.Blue,2);  //实例化一个 Pen 类,并设置其颜色和宽度 


创建 Brush 对象

Brush 类主要用于填充几何图形,如将正方形和圆形填充为其他颜色。Brush类是一个抽象基类,不能进行实例化。若要创建一个画笔对象,需使用从 Brush 派生出的类,如 SolidBrush、HatchBrush 等,下面对这些派生出的类进行详细介绍。

1   SolidBrush 类

SolidBrush 类定义单色画笔,画笔用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。

语法如下:

public SolidBrush(Color color)

color:表示此画笔的颜色。

说明

当不再需要返回 Graphics 时,必须通过调用其 Dispose 方法来释放它。Graphics 只在当前窗口消息期间有效。

【例5】创建一个 Windows 应用程序,通过 Brush 对象将绘制的矩形填充为红色。代码如下:



private void button1_Click(object sender, EventArgs e)
{
Graphics ghs = this.CreateGraphics(); //创建 Graphics对象
Brush mybs = new SolidBrush(Color.Red); //使用 SolidBrush 类创建一个 Brush 对象
Rectangle rt = new Rectangle(10,10,100,100); //绘制一个矩形
ghs.FillRectangle(mybs,rt); //用 Brush 填充 Rectangle
}


2  HatchBrush 类

HatchBrush 类提供了一种特定样式的图形,用来制作填满整个封闭区域的绘图效果。HatchBrush类位于 System.Drawing.Drawing2D 命名空间下。

语法如下:

public HatchBrush(HatchStyle hatchstyle.Color foreColor)

C# GDI+绘图基础_实例化_02  hatchstyle:HatchStyle 值之一,表示此 HatchBrush 所绘制的图案。

C# GDI+绘图基础_实例化_02  foreColor:Color 结构,它表示此 HatchBrush 所绘制线条的颜色。

【例6】 创建一个 Windows 应用程序,利用 HatchStyle 值创建 5 个长条图示。代码如下:



private void button1_Click(object sender, EventArgs e)
{
     Graphics ghs = this.CreateGraphics();                 //创建 Graphics 对象 
     for(int i= 1; i < 6: i++)                             //使用 for 循环 
{
          HatchStyle hs=(HatchStyle)(5+i);                 //设置 HatchStyle 值 
          HatchBrush hb = new HatchBrush(hs,Color.White);  //实例化 HatchBrush 类 
          Rectangle rt = new Rectangle(10,50*i,50*i,50)    //根据 i 值绘制矩形 
          ghs.FillRestangle(hb,rtl);                       //填充矩形
     }
}   


3  LinerGradientBrush 类

LinerGradientBrush 类提供一种渐变色彩的特效,填满图形的内部区域。

语法如下:

public LinerGradientBrush(Point point1,Point point2,Color color1, Color color2)

语法中的参数说明如表1  所示。


C# GDI+绘图基础_gdi+_09

                            表1  参数说明

说明

在使用 LinerGradientBrush 类时,必须在命名空间中添加 System.Drawing.Drawing2D。

【例7】 创建一个 Windows 应用程序,通过 LinerGradientBrush 类绘制线形渐变图形。代码如下:



private void button1_Click(object sender, EventArgs e)
{
Point p1 = new Point(100,100); //实例化两个 Point 类
Point p2 = new Point(150,150);
//实例化 LinerGradientBrush 类,设置其使用黑色和白色进行渐变
LinearGradientBrush Igb = new LinearGradientBrush(p1,p2,Color.Black,Color.White);
Graphics ghs = this.CreateGraphics(); //实例化 Graphics 类
//设置 WrapMode 属性指示该 LinearGradientBrush 的环绕模式
     lgb.WrapMode = WrapMode.TileFlipX;
     ghs.FillRectangle(lgb,15,15,150,150);  //填充绘制矩形 
}



欢迎关注公众号: dotnet编程大全


C# GDI+绘图基础_控件_10

Love life,love yourself

关注小编不迷路呦~