1. 程式人生 > >VS2017中GDI+繪圖輕鬆入門(1)

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#請跳過前兩個步驟)
在這裡插入圖片描述
進入後我們很快就會在解決方案下找到Form1
在這裡插入圖片描述

二、利用屬性列表自動過載Paint事件
雙擊列表中的Form1.cs,然後在下面的屬性對話方塊中找到Paint事件(閃電符號代表事件),如下圖:
在這裡插入圖片描述

雙擊這裡的Paint進入,得到如下的程式碼介面
在這裡插入圖片描述
到了這裡,故事就要從事件中的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事件中繪圖的侷限性。
執行效果如下:
在這裡插入圖片描述
是不是發現C#中繪製圖形還是很簡單吧。
其實,這是GDI+繪圖的一種方式,基本和QT一樣,都是在Paint函式中繪製。後面我們繼續介紹其他的幾種繪製方法。請有興趣的童鞋關注部落格更新。