天天看點

C# Graphics 繪圖(及Color、Pen、Brush)1 命名空間與繼承2 Color、Pen、Brush3 示例4 參考

目錄

1 命名空間與繼承

2 Color、Pen、Brush

2.1 Color

2.2 Pen

2.3 Brush

3 示例

3.1 畫線

3.2 畫矩形

3.3 畫圓

3.4 畫弧/扇形 

3.5 畫多邊形

4 參考

1 命名空間與繼承

        Graphics類是GDI+技術的一個基本類。GDI+(GDI+是GDI[Graphics Device Interface]的改進)是.NET架構的重要組成部分,提供對二維圖形圖像和文字排版處理的支援。

命名空間:System.Drawing

繼承:Object→MarshalByRefObject→Graphics

2 Color、Pen、Brush

2.1 Color

        Color Struct表示一種ARGB顔色(alpha、紅、綠、藍)。Color結構通過表态屬性公開了140個命名顔色。

常用屬性及方法

(1)通過屬性傳回預先建立的Color對象

Color cl = Color.Red;

(2)建立Color執行個體的參數為 a,r,g,b;

Color cl = Color.FromArgb(100,200,200,200);  //第1個參數為透明度(alpha)參數,其後為紅,綠和藍.

 (3)建立Color執行個體的參數為 r,g,b; //參數為紅,綠,藍三種原色,透明度為預設,即完全不透明.

Color cl = Color.FromArgb(200,200,200);

(4)從一個現在的Color對象建立一個新的Color執行個體,隻修改透明度成份

Color cl = Color.FromArgb(100,Color.PowderBlue);

(5)用一個形式為AARRGGBB的組合整數建立一個Color執行個體

Color cl = Color.FromArgb(0x64C8C8FF);

(6)調用靜态FromKnownColor方法來建立Color對象

Color cl = Color.FromKnownColor(KnownColor.PowderBlue);  //KnownColor枚舉值作為參數.

(7)調用靜态FromName方法

Color cl = Color.FromName("PowderBlue");  //字元串參數必須包含一個KnownColor枚舉值的名稱.

其他屬性

(1)IsNamedColor Boolean值,如果顔色值在這140個命名顔色中時,值為true,否則為false.

(2)IsKnownColor Boolean值,如果顔色值是KnownColors枚舉的顔色之一時,值為true.

(3)IsSystemColor Boolean值,如果顔色值是SystemColors類的屬性值之一時,值為true.

顔色對照表

點選連結檢視顔色對照表:連結

2.2 Pen

畫筆,定義用于繪制直線和曲線的對象。

構造函數

(1)Pen pen1 = new Pen(Color);  //參數為顔色Color 寬度預設為1;

          Pen pen2 = new Pen(Color, Single); //參數為顔色Color,單精度浮點數Sigle;

(2) Pen pen3 = Pen(Brush);  // 使用指定的 Pen 初始化 Brush 類的新執行個體。

          Pen pen4 = Pen(Brush, Single);  // 使用指定的 Pen 和 Brush 初始化 Width 類的新執行個體。

屬性

Alignment 擷取或設定此 Pen 的對齊方式。
Brush 擷取或設定 Brush,用于确定此 Pen 的特性。
Color 擷取或設定此 Pen 的顔色。
CompoundArray 擷取或設定用于指定複合鋼筆的值數組。 複合鋼筆繪制由平行直線和空白區域組成的複合直線。
CustomEndCap 擷取或設定要在通過此 Pen 繪制的直線終點使用的自定義線帽。
CustomStartCap 擷取或設定要在通過此 Pen 繪制的直線起點使用的自定義線帽。
DashCap 擷取或設定用在短劃線終點的線帽樣式,這些短劃線構成通過此 Pen 繪制的虛線。
DashOffset 擷取或設定直線的起點到短劃線圖案起始處的距離。
DashPattern 擷取或設定自定義的短劃線和空白區域的數組。
DashSt5.1yle 擷取或設定用于通過此 Pen 繪制的虛線的樣式。
EndCap 擷取或設定要在通過此 Pen 繪制的直線終點使用的線帽樣式。
LineJoin 擷取或設定通過此 Pen 繪制的兩條連續直線的端點的聯接樣式。
MiterLimit 擷取或設定斜接角上聯接寬度的限制。
PenType 擷取用此 Pen 繪制的直線的樣式。
StartCap 擷取或設定在通過此 Pen 繪制的直線起點使用的線帽樣式。
Transform 擷取或設定此 Pen 的幾何轉換的副本。

2.3 Brush

畫刷:定義用于填充圖形形狀(如矩形、橢圓、餅形、多邊形和封閉路徑)的内部的對象。

參考代碼:

private void Form1_Paint(object sender, PaintEventArgs e)
{
     // (實心刷)
         Rectangle  myrect1 = new Rectangle(20, 80, 250, 100);
         SolidBrush  mysbrush1 = new SolidBrush(Color.DarkOrchid);                  
         SolidBrush  mysbrush2 = new SolidBrush(Color.Aquamarine);      
         SolidBrush  mysbrush3 = new SolidBrush(Color.DarkOrange);

     //(梯度刷)
         LinearGradientBrush  mylbrush5 = new LinearGradientBrush(rect1,
         Color.DarkOrange, Color.Aquamarine,
         LinearGradientMode.BackwardDiagonal);

         //(陰影刷)
         HatchBrush  myhbrush5 = new HatchBrush(HatchStyle.DiagonalCross,
         Color.DarkOrange, Color.Aquamarine);
         HatchBrush  myhbrush2 = new HatchBrush(HatchStyle.DarkVertical,
         Color.DarkOrange, Color.Aquamarine);
         HatchBrush  myhbrush3 = new HatchBrush(HatchStyle.LargeConfetti,
         Color.DarkOrange, Color.Aquamarine);

         //(紋理刷)
         TextureBrush textureBrush = new TextureBrush(new Bitmap(@"e:/123.jpg"));
         e.Graphics.FillRectangle(mysbrush1, rect1);         // (實心刷)
     e.Graphics.FillRectangle(mylbrush1, rect1);            //(梯度刷)

       e.Graphics.FillRectangle(myhbrush1, rect1);             //(陰影刷)      
        e.Graphics.FillRectangle(mytextureBrush, rect1);       //(紋理刷)
}
           

結果如下:

C# Graphics 繪圖(及Color、Pen、Brush)1 命名空間與繼承2 Color、Pen、Brush3 示例4 參考

幾種畫刷對比

3 示例

3.1 畫線

畫實線和虛線的代碼如下:

private void button1_Click(object sender, EventArgs e)
{
    //畫實線
    Pen pen = new Pen(Color.Red, 3); 
    //确定線的首位位置
    Point point1 = new Point(10, 50);
    Point point2 = new Point(250, 50);
    Graphics g = this.CreateGraphics();
    g.DrawLine(pen, point1, point2);
}

private void button2_Click(object sender, EventArgs e)
{
    //畫虛線
    Pen pen = new Pen(Color.Red, 3);
    //自定義虛線樣式
    pen.DashStyle = DashStyle.Custom;
    pen.DashPattern = new float[] { 2, 2 };

    //确定線的首位位置
    Point point1 = new Point(10, 80);
    Point point2 = new Point(250, 80);
    Graphics g = this.CreateGraphics();
    g.DrawLine(pen, point1, point2);
}
           

效果如下:

C# Graphics 繪圖(及Color、Pen、Brush)1 命名空間與繼承2 Color、Pen、Brush3 示例4 參考

畫線

3.2 畫矩形

填充矩形:g.FillRectangle(brush, rect);

不填充矩形:g.DrawRectangle(pen, rect);

代碼如下:

private void button1_Click(object sender, EventArgs e)
{
    //畫矩形
    Pen pen = new Pen(Color.YellowGreen);
    SolidBrush brush = new SolidBrush(Color.YellowGreen);

    Graphics g = this.CreateGraphics();
    //定義一個矩形
    Rectangle rect = new Rectangle(20, 20, 220, 200);
    g.FillRectangle(brush, rect);
    //g.DrawRectangle(pen, rect);
}
           
C# Graphics 繪圖(及Color、Pen、Brush)1 命名空間與繼承2 Color、Pen、Brush3 示例4 參考

畫矩形

3.3 畫圓

①填充圓:g.FillEllipse(brush, rect);

②不填充圓:g.DrawEllipse(pen, rect);

代碼如下:

private void button1_Click(object sender, EventArgs e)
{
    //畫圓
    Pen pen = new Pen(Color.Red);
    SolidBrush brush = new SolidBrush(Color.YellowGreen);

    Graphics g = this.CreateGraphics();
    Rectangle rect = new Rectangle(20, 20, 200, 200);
    g.FillEllipse(brush, rect);
    g.DrawEllipse(pen, rect);
}
           

效果如下:

C# Graphics 繪圖(及Color、Pen、Brush)1 命名空間與繼承2 Color、Pen、Brush3 示例4 參考

畫圓

3.4 畫弧/扇形 

①畫弧:g.DrawArc(pen, rect, -90,90);   //四個參數分别為:Pen,矩形區域rect,起始角度(0為水準向右,順時針為正),掃過角度。

②畫填充扇形:g.FillPie(brush, rect, -45, 90);  //四個參數分别為:Brush,矩形區域rect,起始角度(0為水準向右,順時針為正),掃過角度。

③畫不填充扇形g.DrawPie(pen,rect,-45,90);  //四個參數分别為:Pen,矩形區域rect,起始角度(0為水準向右,順時針為正),掃過角度。

代碼如下:

private void button2_Click(object sender, EventArgs e)
{
    //畫虛線
    Pen pen = new Pen(Color.Red, 3);
    SolidBrush brush = new SolidBrush(Color.YellowGreen);
    Rectangle rect = new Rectangle(20, 20, 200, 200);
    Graphics g = this.CreateGraphics();
    //畫弧線
    //g.DrawArc(pen, rect, -90,90);
    //畫扇形
    g.DrawPie(pen, rect, -45, 90);
    g.FillPie(brush, rect, -45, 90);
}
           
C# Graphics 繪圖(及Color、Pen、Brush)1 命名空間與繼承2 Color、Pen、Brush3 示例4 參考

畫扇形

3.5 畫多邊形

① 畫填充多邊形:g.DrawPolygon(pen, pis);  //參數分别是:pen,Point數組;

② 畫不填充多邊形:g.FillPolygon(brush, pis); //參數分别是:brush,Point數組;

代碼入下:

private void button2_Click(object sender, EventArgs e)
{
    //畫多邊形
    Pen pen = new Pen(Color.Red, 3);
    SolidBrush brush = new SolidBrush(Color.YellowGreen);
    Rectangle rect = new Rectangle(20, 20, 200, 200);
    Graphics g = this.CreateGraphics();
    //point數組
    Point[] pis = new Point[] { new Point(10, 10), new Point(100, 20), new Point(130, 50), new Point(100, 200), new Point(70, 200), new Point(10, 20) };
    g.DrawPolygon(pen, pis);
    g.FillPolygon(brush, pis);
}
           
C# Graphics 繪圖(及Color、Pen、Brush)1 命名空間與繼承2 Color、Pen、Brush3 示例4 參考

畫多邊形

4 參考

Color 參考:C#Color對象的使用介紹及顔色對照表

Brush參考:c# Brush的使用方法

c#