GDI+与图形图像
2010-04-01 20:56 Eric.Hu 阅读(1518) 评论(0) 编辑 收藏 举报GDI+已经完全替代了GDI,目前是在Windows应用程序中以编程方式呈现图形的唯一方法。也可以在设计时使用图像编辑器来创建图形以便在应用程序中使用。虽然在WEB表单中,不能直接使用GDI+,但可以通过WEB服务器的Image空间来显示图形图像。
GDI+可以使用用户创建图形,绘制文本以及将图形图像作为对象进行操作 。使用GDI+创建图形图像需要先创建Graphics对象,然后才可以使用GDI+绘制线条,形状,呈现文本或显示操作图像。步骤如下:
- 创建Graphics对象
- 使用Graphics对象绘制线条形状,呈现文本,显示与操作图形图像
首先,创建Graphics对象,可以由三种方法创建:
- 窗体或控件的Paint事件中的PaintEventArgs,可以接受对图形图像对象的引用。在为控件创建绘制代码时,通常会使用该方法获得对图形图像对象的引用。具体代码如下:private void Form1_Paint(object sender,PaintEventArgs e)
{
Graphics myg;
myg=e.Graphics;
} - 调用某控件或窗体的CreateGraphics方法来获得对Graphics对象的引用,该对象表示控件或窗体的绘图表面。如果想要在已存在的窗体或控件上绘图,可以使用该方法,具体代码如下:private void button1_Click(object sender,EventArgs e)
{
Graphics myg;
myg=this.CreateGraphics();
} - 从继承自“图像”的任何对象创建Graphics对象,此方法在更改已存在的图像时非常有用,具体代码如下:Bitmap mybit=new Bitmap(@"d:\mypicture.bmp");
Graphics myg=Graphics.FormImage(mybit);
Graphics对象创建以后,就可以利用它来绘制线条,形状,文本,显示与操作图像。在操作Graphics对象时需要了解一下以下类和结构:
Font类:提供呈现文本时,需要使用什么字体的说明。
Pen类:用于绘制线条,几何图形,勾勒形状轮廓。
Brush类:用于填充图形区域。
Color结构:表示要显示的不同颜色。
简要说明:
Pen:可以绘制线条,曲线,几何图形,勾勒图形轮廓等,创建笔的具体代码如下:
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是抽象类,不能被实例化。常用的画笔类有:
- SolidBrush:画笔的最简单形式,它用纯色进行绘制。
- LinearGradientBrush:使用两种颜色的渐变色进行绘制。
- HatchBrush:与SolidBrush相似,但可以从大量预设的图案中选择要使用的图案,而不是纯色。
- TextureBrush:使用纹理进行绘制
- PathGradientBrush:基于开发人员定义的唯一路径,使用复杂的混合色渐变进行绘制。
颜色:表示形式有以下几种形式:
Color mycolor2 = Color.FromArgb(20,20,156); //利用红绿蓝混合来产生不同的颜色,每种颜色的取值范围是0~255
Color mycolor3 = Color.FromArgb(127,20,20,156); //127表示Alpha透明度
绘制线条与几何图形
Graphics对象提供了绘制各种线条和形状的方法,可以用纯色,透明色,用户自定义的渐变或图像纹理来显示简单或复杂的图形。绘制图形常用的方法及意义如下:
- Graphics.DrawLine方法:绘制直线,需要指定直线的起点和结束点坐标。
- Graphics.DrawEllipse方法:绘制椭圆,需要指定椭园左上角X坐标,Y坐标,椭圆的边框的高度和宽度
- Graphics.FillEllipse方法:绘制填充椭圆,需要一个或多对象作为参数,如Rectangle对象
- Graphics.DrawRectangle方法:绘制矩形,需要一个或多个对象作为参数,如Rectangle对象,也可以指定矩形的左上角X坐标,Y坐标,矩形边框的宽度和高度
- Graphics.FillRectangle方法:绘制填充矩形,需要一个或多个对象作为参数,如Rectangle对象
- Graphics.DrawPolygon方法:绘制复杂多边形,需要一个坐标数组
- Graphics.FillPolygon方法:绘制填充复杂多边形,需要一个坐标数组
- Graphics.DrawPie方法:绘制扇形,需要扇形所在的矩形域即一个Rectangle对象,起始初始角和终止角
- Graphics.FillPie方法:绘制填充扇形,需要扇形所在的矩形域即一个Rectangle对象,起始初始角和终止角
示例代码:
1. 绘制几何图形:/Files/long-gengyun/DrawingShapes.rar