美文网首页通往成功之路
C# GDI+ Winform简单绘图(概论)

C# GDI+ Winform简单绘图(概论)

作者: 此十八 | 来源:发表于2018-02-28 13:40 被阅读43次

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

    /********************/

    首先,准备一个画板。

    方法一:在窗体或控件的Paint事件中直接引用Graphics对象(利用窗体或控件中Paint事件的 PaintEventArgs)

    在窗体或控件的Paint事件中接收对图形对象的引用,作为PaintEventArgs(PaintEventArgs指定绘制控件所用的Graphics)的一部分,在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。

    例如:

    //窗体的Paint事件的响应方法

    private void form1_Paint(object sender, PaintEventArgs e) 

    {

    Graphics g = e.Graphics; //创建画板,这里画板由Form提供的

    Rectangle r = new Rectangle(10, 10, 300, 200);//是创建画矩形的区域

    g.DrawRectangle(Pens.Red, r);//g对象提供了画图形的方法,我们只需调用即可

    }

    //也可以直接重载控件或窗体的OnPaint方法,具体代码如下所示:

    protected override void OnPaint(PaintEventArgs e) 

    {

        Graphics g = e.Graphics;

    Rectangle r = new Rectangle(10, 10, 300, 200);//是创建画矩形的区域

    g.DrawRectangle(Pens.Red, r);//g对象提供了画图形的方法,我们只需调用即可

    }

    注:在窗体或控件重绘的时,会调用OnPaint方法,在OnPaint方法内,会激发Paint事件。所以你只要给Paint事件一个处理函数,它就会在窗体重绘的时候激发Paint事件,并调用事件的处理方法, 或者,你重写基类的OnPaint方法,也可以达到相同的功效。窗体重绘发生在窗体最小化,最大化,被遮挡又重新显示出来,等等情况,即:需要重新绘制界面的时候触发窗体重绘事件。

    方法二:调用某控件或窗体的CreateGraphics方法

    调用某控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。如果想在已存在的窗体或控件上绘图,通常会使用此方法。

    例如:

    Graphics g = this.CreateGraphics();

    //窗体的Paint事件的响应方法(也可以这么用)

    private void Form1_Paint(object sender, PaintEventArgs e)

    {

    Graphics g = this.CreateGraphics();//获取到graphics对象

    Rectangle rect = new Rectangle(10, 10, 35, 35);//定义矩形,参数为起点横纵坐标以及其长和宽

    g.DrawRectangle(Pens.Red, rect);

    }

    方法三:调用Graphics类的FromImage静态方法

    由从Image继承的任何对象创建Graphics对象。在需要更改已存在的图像时,通常会使用此方法。

    例如:

    //在PictureBox控件上插入图片

    private void Form1_Load(object sender, EventArgs e)

    {

    Image img = Image.FromFile("e:/g1.jpg");//建立Image对象

    Graphics g = Graphics.FromImage(img);//创建Graphics对象

    pictureBox1.Image = img;

    }

    //在PictureBox控件上画图

    private void Form1_Load(object sender, EventArgs e)

    {

    Bitmap bitmap = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);

    Graphics g = Graphics.FromImage(bitmap);

    pictureBox1.Image = bitmap;

    Rectangle r = new Rectangle(10, 10, 300, 200);//是创建画矩形的区域

    g.DrawRectangle(Pens.Red, r);//g对象提供了画图形的方法,我们只需调用即可

    }

    然后,只要笔。

    Pen p = new Pen(Color.Red, 2);//定义了一个蓝色,宽度为的画笔

    接下来,画画。

    private void form1_Paint(object sender, PaintEventArgs e) 

    {

              Graphics g = e.Graphics; //创建画板,这里的画板是由Form提供的.

              Pen p = new Pen(Color.Red, 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),外接矩形的宽为,高为

    }

    相关文章

      网友评论

        本文标题:C# GDI+ Winform简单绘图(概论)

        本文链接:https://www.haomeiwen.com/subject/qmbbxftx.html