程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> GDI+與圖形編程研究,gdi圖形編程

GDI+與圖形編程研究,gdi圖形編程

編輯:C#入門知識

GDI+與圖形編程研究,gdi圖形編程


GDI+的基本概念

GDI+的常用對象,包括Graphics、Font、Brush、Pen等對象的創建和使用

常用圖形的繪制

Color結構、Point結構和Rectangle結構 

1.GDI+的概念

      GDI+是GDI(Graphics Device Interface,圖形設備接口)的改進產品。

2.GDI+的繪圖命名空間

      用戶所使有的GDI+函數都保存在System.Drawing.d11程序集中。其中包括System.Drawing、System.Drawing.Text、System.Drawing.Printing、System.Drawing.Imaging、System.Drawing.Drawing2D和System.Drawing.Design等命名空間。    

Graphics對象

(1)利用窗體或控件的Paint事件的參數PaintEventArgs創建Graphics對象。

(2)使用窗體或控件的CreateGraphics方法

       Graphics  g=this.CreateGraphics();

(3)使用Image的派生類創建Graphics對象。使用Image的任何派生類均可以生成相應的Graphics對象,這種方法一般適用於在C#中對圖像進行處理的場合。

              Bitmap b=new Bitmap("Mybmp.bmp");

Graphics g=Graphics.FromImage(b); 

Pen對象

Pen類的構造函數有四種,使用方法如下。

(1)創建某一顏色的Pen對象:public Pen(Color)

(2)創建某一刷子樣式的Pen對象:public Pen(Brush)

(3)創建某—刷子樣式並具有相應寬度的Pen對象:public Pen(Brush,float)

(4)創建某一顏色和相應寬度的Pen對象:public Pen(Color,float)

Pen對象的常用屬性

(1)Alignment屬性:用來獲取或設置此Pen對象的對齊方式。

(2)Color屬性:用來獲取或設置此Pen對象的顏色。

(3)Width屬性:用來獲取或設置此Pen對象的寬度。

(4)DashStyle屬性:用來獲取或設置通過此Pen對象繪制的虛線的樣式。

(5)DashCap屬性:用來指定虛線兩端風格,是一個DashCap枚舉型的值。

(6)StartCap屬性:用來獲取或設置通過此Pen對象繪制的直線起點的帽樣式。

(7)EndCap屬性:用來獲取或設置通過此Pen對象繪制的直線終點的帽樣式。

(8)PenType屬性:用來獲取用此Pen對象繪制的直線的樣式。  

Font對象 

Brush對象

1.SolidBrush畫刷

   SolidBrush類用來定義單一顏色的Brush,其構造函數如下。

   public SolidBrush(Color.Color)

2.HatchBrush畫刷

      HatchBrush類的構造函數有兩種,分別如下:  

[格式1]:public HatchBrush(HatchStyle, Color);

[格式2]:public HatchBrush(HatchStyle, Color, Color); HatchBrush畫刷具有三個屬性,分別如下:

(1)BackgroundColor屬性:獲取此HatchBrush 對象的背景色。

(2)ForegroundColor屬性:獲取此HatchBrush 對象的前景色。

(3)HatchStyle屬性:獲取此HatchBrush 對象的陰影樣式。

3.LinearGradientBrush畫刷

LinearGradientBrush類的構造函數有多種格式,最常用的格式如下。

    public LinearGradientBrush(Point1, Point2, Color1, Color2); 

常用圖形的繪制方法

1.畫直線

      [格式1]:public void DrawLine(Pen pen,int x1,int y1,int x2,int y2);

      [格式2]:public void DrawLine(Pen pen,Point pt1,Point pt2);

2.畫橢圓

[格式1]:public void DrawEllipse( Pen pen, Rectangle rect);

[格式2]:public void DrawEllipse(Pen pen,int x,int y,int width, int height);

3.繪制圓弧

[格式1]:public void DrawArc(Pen pen,Rectangle rect,float startAngle,float sweepAngle);

[格式2]:public void DrawArc(Pen pen,int x,int y,int width,int height,int startAngle,int sweepAngle);

4.畫扇形圖

使用Graphics對象的DrawPie方法可以繪制扇形圖,所謂扇形圖其實就是把一段圓弧的兩個端點與圓心相連。DrawPie方法的格式與DrawArc方法基本一致。

5.畫矩形

[格式1]: public void DrawRectangle( Pen pen, Rectangle rect);

[格式2]:public void DrawRectangle(Pen pen,int x,int y,int width,int height);

6.畫Bezier曲線

[格式1]:public void DrawBezier(Pen pen,Point pt1,Point pt2,Point pt3,Point pt4);

[格式2]:public void DrawBezier(Pen pen,float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4);

7.畫多邊形

[格式1]:public void DrawPolygon(Pen pen,  Point[] points);

[格式2]:public void DrawPolygon(Pen pen, PointF[] points);

8.繪制閉合曲線

[格式1]:public void DrawClosedCurve(Pen pen,Point[] points);

[格式2]:public void DrawClosedCurve(Pen pen,Point[] points,float tension,FillMode fillmode);

9.繪制非閉合曲線

[格式]:public void DrawCurve( Pen pen,Point[] points);

10.繪制路徑

[格式]:public void DrawPath(Pen pen,GraphicsPath path);

11.填充橢圓

[格式1]:public void FillEllipse(Brush brush, Rectangle rect);

[格式2]:public void DrawEllipse(Brush brush,int x,int y,int width, int height);

12.填充矩形

[格式1]: public void FillRectangle( Brush brush, Rectangle rect);

[格式2]:public void FillRectangle(Brush brush,int x,int y,int width,int height);

13.填充餅圖

[格式1]:public void FillPie(Brush brush,Rectangle rect,float startAngle,float sweepAngle)

[格式2]:public void FillPie(Brush brush,int x,int y,int width,int height,int startAngle,int sweepAngle);


GDI與GDI+還有VC/MFC本身的圖形編程有什不同?

MFC本身的圖形圖像處理都是GDI GDI+ 是GDI的增強版"要不然要一個+號干嘛"
GDI+背後有.NET支持 主要在.NET中使用 處理圖像比GDI要方便得多(.NET庫實在是很強大)
 

GDI+(C#)編程中怎使繪制的圖形隨窗體變化

那就寫個函數 在重繪的事件寫
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved