GDI+ 中的筆刷和填滿的形狀
封閉圖形 (例如矩形或橢圓形) 由外框和內部組成。 外框是用畫筆繪製的,而內部則以筆刷填滿。 GDI+ 提供數個筆刷類別來填滿封閉圖案的內部:SolidBrush、HatchBrush、TextureBrush、LinearGradientBrush 和 PathGradientBrush。 所有這些類別都繼承自 Brush 類別。 下圖顯示以實心筆刷填滿的矩形,以及以影線筆刷填滿的橢圓形。
以實心筆刷填滿的矩形,以及填滿影線筆刷的橢圓形的螢幕擷取畫面。Aboutgdip02_art17
實心筆刷
若要繪製 Bézier 曲線,您需要 Graphics 類別的實例和 Brush。 Graphics 類別的實例提供方法,例如 FillRectangle 和 FillEllipse,而 Brush 會儲存填滿的屬性,例如色彩和圖樣。 Brush 會作為其中一個引數傳遞至 fill 方法。 下列程式碼範例示範如何使用純紅色填滿橢圓形。
SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);
Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)
注意
在上述範例中,筆刷的類型為 SolidBrush,其繼承自 Brush。
影線筆刷
當您以影線筆刷填滿圖形時,您可以指定前景色彩、背景色彩和影線樣式。 前景色彩是影線的色彩。
HatchBrush myHatchBrush =
new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);
Dim myHatchBrush As _
New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)
GDI+ 提供超過 50 個影線樣式;下圖所示的三個樣式為 Horizontal、ForwardDiagonal 和 Cross。
三個橢圓形的螢幕擷取畫面,其中包含水平影線筆刷、正對角線影線筆刷和交叉影線筆刷。Aboutgdip02_art18
紋理筆刷
使用紋理筆刷,您可以使用儲存在點陣圖中的圖樣填滿圖形。 例如,假設下圖儲存在名為 MyTexture.bmp
的磁碟檔案中。
My Texture dot b m p 檔案的螢幕擷取畫面。Aboutgdip02_Art19
下列程式碼範例示範如何重複儲存在 MyTexture.bmp
中的圖片,以填滿橢圓形。
Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);
Dim myImage As Image = Image.FromFile("MyTexture.bmp")
Dim myTextureBrush As New TextureBrush(myImage)
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50)
下圖顯示填滿橢圓形。
以紋理筆刷填滿的橢圓形的螢幕擷取畫面。AboutGdip02_Art20
漸層筆刷
GDI+ 提供兩種漸層筆刷:線性和路徑。 您可以使用線性漸層筆刷,以色彩填滿圖形,該色彩會在水平、垂直或對角線之間移動時逐漸變更。 下列程式碼範例示範如何使用水平漸層筆刷填滿橢圓形,當您從橢圓形的左邊緣移至右邊緣時,從藍色變更為綠色。
LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
myRectangle,
Color.Blue,
Color.Green,
LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);
Dim myLinearGradientBrush As New LinearGradientBrush( _
myRectangle, _
Color.Blue, _
Color.Green, _
LinearGradientMode.Horizontal)
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle)
下圖顯示填滿橢圓形。
以水平漸層筆刷填滿的橢圓形的螢幕擷取畫面。AboutGdip02_Art21
路徑漸層筆刷可以設定為當您從圖形中央移至邊緣時變更色彩。
以路徑漸層筆刷填滿的橢圓形的螢幕擷取畫面。AboutGdip02_Art22
路徑漸層筆刷相當有彈性。 下圖中用來填滿三角形的漸層筆刷會逐漸從中央的紅色變更為頂點上三種不同的色彩。
以路徑漸層筆刷填滿的三角形的螢幕擷取畫面。AboutGdip02_Art23