C# GDI+ 简单绘图(一)
最近对GDI+这个东西接触的比较多,也做了些简单的实例,比如绘图板,仿QQ截图等.
  废话不多说了,我们先来认识一下这个GDI+,看看它到底长什么样.
  GDI+Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;C#.NET中,使用GDI+处理二维(2D)的图形和图像,使用DirectX处理三维(3D)的图形图像,图形图像处理用到的主要命名空间是System . Drawing:提供了对GDI+基本图形功能的访问,主要有Graphics类、Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等.
  大概了解了什么是GDI+,我们来看一下绘图要用到的主要工具,要画图,肯定要画板吧,C#画板可以通过Graphics这个类来创建,有了画板,总得弄个笔什么之类的吧,不然怎么画呀,难不成我们用手指画.笔又可以分好多种类,比如铅笔,画刷等.它们的区别主要是铅笔可以用来画线条,而画刷呢,嘿嘿,自己考虑下.c#中我们可以用Pen,Brush类来实现类似功能.颜料则自然是用Color.
  有了工具,我们就可以开始动手了!(所需命名空间:using System.Drawing;)
  实现效果:在空白窗体中画基本图形
  准备一个画板:
  创建一个画板主要有3种方式:
  A: 在窗体或控件的Paint事件中直接引用Graphics对象
  B: 利用窗体或某个控件的CreateGraphics方法
  C: 从继承自图像的任何对象创建Graphics对象
  这次我们就先以A为例:
private void Form1_Paint(object sender, PaintEventArgs e)
    {
      Graphics g = e.Graphics; //创建画板,这里的画板是由Form提供的.
    }
  然后,我们要只笔:
private void Form1_Paint(object sender, PaintEventArgs e)
    {
      Graphics g = e.Graphics; //创建画板,这里的画板是由Form提供的.
      Pen p = new Pen(Color.Blue, 2);//定义了一个蓝,宽度为的画笔
    }
  接下来我们就可以来画画了.
private void Form1_Paint(object sender, PaintEventArgs e)
    {
      Graphics g = e.Graphics; //创建画板,这里的画板是由Form提供的.
      Pen p = new Pen(Color.Blue, 2);//定义了一个蓝,宽度为的画笔
      g.DrawLine(p, 10, 10, 100, 100);//在画板上画直线,起始坐标为(10,10),终点坐标为(100,100)
      g.DrawRectangle(p, 10, 10, 100, 100);//在画板上画矩形,起始坐标为(10,10),宽为,高为
      g.DrawEllipse(p, 10, 10, 100, 100);//在画板上画椭圆,起始坐标为(10,10),外接矩形的宽为,高为
    }
  效果图如下:
 
  在上一片里已经向大家介绍了如何使用GDI+绘制简单的图像,这一片继续向大家介绍其它一些绘图知识.
  1.首先我们来看下上一片中我们使用过的Pen.
  Pen的属性主要有: Color(),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap
(线尾形状), StartCap(线头形状),Width(粗细).我们可以用Pen 来画虚线,带箭头的直线等
Pen p = new Pen(Color.Blue, 5);//设置笔的粗细为,颜为蓝
Graphics g = this.CreateGraphics();
//画虚线
p.DashStyle = DashStyle.Dot;//定义虚线的样式为点
g.DrawLine(p, 10, 10, 200, 10);
//自定义虚线
p.DashPattern = new 改变button按钮的形状float[] { 2, 1 };//设置短划线和空白部分的数组
g.DrawLine(p, 10, 20, 200, 20);
//画箭头,只对不封闭曲线有用
p.DashStyle = DashStyle.Solid;//实线
p.EndCap = LineCap.ArrowAnchor;//定义线尾的样式为箭头
g.DrawLine(p, 10, 30, 200, 30);
g.Dispose();
p.Dispose();
  以上代码运行结果:
  2.接下来我们来看下Brush的使用
  作用:我们可以用画刷填充各种图形形状,如矩形、椭圆、扇形、多边形和封闭路径等,主要有几种不同类型的画刷:
  ?    SolidBrush:画刷最简单的形式,用纯进行绘制
  ?    HatchBrush:类似于 SolidBrush,但是可以利用该类从大量预设的图案中选择绘制时要使用的图案,而不是纯
  ?    TextureBrush:使用纹理(如图像)进行绘制
  ?    LinearGradientBrush:使用沿渐变混合的两种颜进行绘制
  ?    PathGradientBrush :基于编程者定义的唯一路径,使用复杂的混合渐变进行绘制
  我们这里只是简单介绍使用其中的几种:
Graphics g = this.CreateGraphics();
Rectangle rect = new Rectangle(10, 10, 50, 50);//定义矩形,参数为起点横纵坐标以及其长和宽
//单填充
SolidBrush b1 = new SolidBrush(Color.Blue);//定义单画刷     
g.FillRectangle(b1, rect);//填充这个矩形
//字符串
g.DrawString("字符串", new Font("宋体", 10), b1, new PointF(90, 10));
//用图片填充
TextureBrush b2 = new TextureBrush(Image.FromFile(@"e:picture1.jpg"));
rect.Location = new Point(10, 70);//更改这个矩形的起点坐标
rect.Width = 200;//更改这个矩形的宽来
rect.Height = 200;//更改这个矩形的高
g.FillRectangle(b2, rect);
//用渐变填充
rect.Location = new Point(10, 290);
LinearGradientBrush b3 = new LinearGradientBrush(rect, Color.Yellow , Color.Black , LinearGradientMode.Horizontal);
g.FillRectangle(b3, rect);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。