GDI+是GDI的后繼者,它是.NET Framework為操作圖形提供的應用程序編程接口,主要用在窗體上繪制各種圖形圖像,可以用於繪制各種數據圖像、數學仿真等。
Graphics類是GDI+的核心,它提供將對象繪制到顯式設備的方法。Graphics類封裝了繪制直線、曲線、圓形、圖像和文本的方法,是一切GDI+操作的基礎類。在繪圖之前,必須在指定的窗體上創建一個Graphics對象,才能調用Graphics類的方法畫圖。
一、創建Graphics類對象的的三種方法
1.1 Paint事件
在窗體或控件的Paint事件中創建,將其作為PaintEventArgs的一部分。在為控件創建繪制代碼時,通常會使用此方法。
例如,在Paint事件中創建Graphics對象:
private void Form1_Paint(object sender, PaintEventArgs e) //窗體的Paint事件 { Graphics g = e.Graphics; //創建Graphics對象 }
1.2 CreateGraphics方法
調用窗體或控件的CreateGraphics方法可以獲取對Graphics對象的引用,該對象表示控件或窗體的繪圖畫面。如果在已存在的窗體或控件身上繪圖,應該使用此方法
例如,在窗體的Load事件中,通過CreateGraphics方法創建Graphics對象
private void Form1_Load(object sender, EventArgs e) //窗體的Load事件 { Graphics g; //聲明一個Graphics對象 g = this.CreateGraphics(); }
1.3 Graphics.FromImage方法
由從Image繼承的任何對象創建Graphics對象,調用Graphics.FromImage方法即可,該方法在需要更改已存在的圖像時十分有用,例:
private void Form1_Load(object sender, EventArgs e) { Bitmap mbit = new Bitmap(@"C:\test.bmp"); Graphics g = Graphics.FromImage(mbit); }
二、Graphics類的屬性
Clip | 獲取或設置 Region,它限定此 Graphics 的繪圖區域。 |
ClipBounds | 獲取一個 RectangleF 結構,該結構限定此 Graphics 的剪輯區域。 |
CompositingMode | 獲取一個值,該值指定如何將合成圖像繪制到此 Graphics。 |
CompositingQuality | 獲取或設置繪制到此 Graphics 的合成圖像的呈現質量。 |
DpiX | 獲取此 Graphics 的水平分辨率。 |
DpiY | 獲取此 Graphics 的垂直分辨率。 |
InterpolationMode | 獲取或設置與此 Graphics 關聯的插補模式。 |
IsClipEmpty | 獲取一個值,該值指示此 Graphics 的剪輯區域是否為空。 |
IsVisibleClipEmpty | 獲取一個值,該值指示此 Graphics 的可見剪輯區域是否為空。 |
PageScale | 獲取或設置此 Graphics 的世界單位和頁單位之間的比例。 |
PageUnit | 獲取或設置用於此 Graphics 中的頁坐標的度量單位。 |
PixelOffsetMode | 獲取或設置一個值,該值指定在呈現此 Graphics 的過程中像素如何偏移。 |
RenderingOrigin | 為抵色處理和陰影畫筆獲取或設置此 Graphics 的呈現原點。 |
SmoothingMode | 獲取或設置此 Graphics 的呈現質量。 |
TextContrast | 獲取或設置呈現文本的灰度校正值。 |
TextRenderingHint | 獲取或設置與此 Graphics 關聯的文本的呈現模式。 |
Transform | 獲取或設置此 Graphics 的幾何世界轉換的副本。 |
VisibleClipBounds | 獲取此 Graphics 的可見剪輯區域的邊框。 |
注:詳情參考MSDN對Graphics屬性的說明
三、Graphics類的常用方法及說明
方法 | 描述 |
Clear | 清除整個繪圖面並以指定背景色填充 |
Dispose | 釋放由此Graphics對象使用的所有資源 |
DrawArc | 繪制一段弧線,它表示由一對坐標、寬高指定的橢圓部分 |
DrawBezier | 繪制由四個Point結構定義的貝塞爾樣條 |
DrawBeziers | 從Point結構的數組繪制一系列貝塞爾樣條 |
DrawCurve | 繪制經過一組指定的Point結構的基數樣條 |
DrawEllipse | 繪制一個由一對坐標、寬度和高度指定的橢圓 |
DrawIcon | 在指定坐標處繪制由指定的Icon對象表示的圖像 |
DrawImage | 在指定的位置並且按原始大小繪制指定的Image對象 |
DrawLine | 繪制一條連接由坐標對象指定的兩個點的線條 |
DrawLines | 繪制一列連接一組Point結構的線段 |
DrawPath | 繪制GraphicsPath對象 |
DrawPie | 繪制一個扇形,該扇形由一個坐標對象,寬度和高度,以及兩條射線所指定的橢圓指定 |
DrawPolygon | 繪制由一組Point結構定義的多邊形 |
DrawRectangle | 繪制由坐標對。寬度和高度指定的矩形 |
DrawRectangles | 繪制一系列由Rectangle結構指定的矩形 |
DrawString | 在指定位置並且用指定的Brush和Font對象繪制指定的文本字符串 |
FillEllipse | 填充邊框所定義的橢圓內部,該邊框由一對坐標、一個高度和一個寬度指定 |
FillPath | 填充GraphicsPath對象的內部 |
FillPie | 填充扇形內部 |
FillPolygon | 填充多邊形內部 |
FillRectangle | 填充由一對坐標、一個寬度和一個高度指定的矩形內部 |
FillRectangles | 填充由Rectangle結構指定的一些列矩陣的內部 |
FillRegion | 填充Region對象的內部 |
FromImage | 從指定的Image對象創建行的Graphics對象 |
Save | 保存此Graphics對象的當前狀態,並且GraphicsState對象標識保存的狀態 |
注:完整的Graphics方法請查看MSDN對Graphics方法的說明
由於時間有限,后續還會對GDI+ 相關內容進行更新