VS2017中GDI+绘图轻松入门(1)

GDI+之前,我们先来解释一下,什么是GDI,G就是Graphic D就是Device I就是Interface,那放在一起就是绘图设备接口。所以GDI+就是GDI Plus,就好比我们的手机iPhone X8 后面跟一个IPhone8 Plus一样一样的,升级版。

GDI是用在VC中的,2001年微软整出了.net(C#,VB.net)都包含其中,又另外在GDI的基础上加强了一下,当然也是由于运行框架变了,这里我们不细究了,我们只要知道GDI+就是C#上的一个绘图接口即可。

今天我们就来看看这个GDI+究竟怎么用?其实和QT的使用有些类似,我们先看一个小小的例子,我们在一个Form(Form就相当于QT以及VC中的Dialog)中绘制一些简单的图形元素。
首先我们在c#2017中创建一个From(C#最舒服的就是创建Form非常容易,而且没有VC那么多复杂的机制要了解,一进去就是一个main函数,清清楚楚,所以选择C#绘图也是一个不错的选择,和QT不同的就是它不能跨平台,有跨平台要求的伙伴一老早就要作出抉择)。

一、建立Form
我们打开VS2017,新建工程,选择C#的桌面程序,框架默认4.6.1(如果您已经熟悉C#请跳过前两个步骤)
VS2017中GDI+绘图轻松入门(1)_第1张图片
进入后我们很快就会在解决方案下找到Form1
VS2017中GDI+绘图轻松入门(1)_第2张图片

二、利用属性列表自动重载Paint事件
双击列表中的Form1.cs,然后在下面的属性对话框中找到Paint事件(闪电符号代表事件),如下图:
VS2017中GDI+绘图轻松入门(1)_第3张图片

双击这里的Paint进入,得到如下的代码界面
VS2017中GDI+绘图轻松入门(1)_第4张图片
到了这里,故事就要从事件中的PaintEventArg的形参e开始了。

三、代码实现
我们在Form_Paint的事件中加入如下代码即可完成简单的图形元素绘制了:

using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace drawForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            //创建画板,这里的画板是由Form提供的.
            Graphics grfc = e.Graphics;
            //定义了一个绿色,宽度为的画笔
            Pen pen = new Pen(Color.Green, 2);
            //在画板上画直线,起始坐标为(this.Width / 4, this.Height/4),终点坐标为(this.Width*3 / 4, this.Height*3 / 4)
            grfc.DrawLine(pen, this.Width/4, this.Height / 4, this.Width*3 / 4, this.Height*3 / 4);
            //在画板上画矩形,起始坐标为(this.Width / 4, this.Height/4),宽为,高为
            grfc.DrawRectangle(pen, this.Width / 4, this.Height/4, this.Width/2, this.Height/2);
            //在画板上画椭圆,起始坐标为(this.Width / 4, this.Height / 4),外接矩形的宽为200,高为200
            grfc.DrawEllipse(pen, this.Width / 4, this.Height / 4, 200, 200);
            //绘制文字,起点为160,160;
            grfc.DrawString("Drawing is here!", new Font("宋体", 28), new SolidBrush(Color.Blue), new PointF(160, 160));
        }
    }
}

这里的Graphics 对象,直接由PaintEventArgs 参数来实例化,这是在paint事件中绘图的局限性。
运行效果如下:
VS2017中GDI+绘图轻松入门(1)_第5张图片
是不是发现C#中绘制图形还是很简单吧。
其实,这是GDI+绘图的一种方式,基本和QT一样,都是在Paint函数中绘制。后面我们继续介绍其他的几种绘制方法。请有兴趣的童鞋关注博客更新。

你可能感兴趣的:(C#,程序绘图)