筆刷和填滿的圖形

矩形或橢圓形之類的封閉圖是由外框和內部所組成。 外框是使用 Pen 物件繪製,而內部會填入 Brush 物件。 Windows GDI+ 提供數個筆刷類別來填滿封閉式圖形的內部:SolidBrush、HatchBrushTextureBrushLinearGradientBrushPathGradientBrush。 所有這些類別都繼承自 Brush 類別。 下圖顯示填滿實心筆刷的矩形,以及填滿影線筆刷的橢圓形。

顯示藍色矩形的圖例,以及填滿藍色影線圖樣的紅色橢圓形圖例

 

實心筆刷

若要填滿封閉圖形,您需要 Graphics 物件和 Brush 物件。 Graphics物件提供方法,例如FillRectangleFillEllipse而 Brush物件會儲存填滿的屬性,例如色彩和圖樣。 Brush物件的位址會當做其中一個引數傳遞至 fill 方法。 下列範例會以純紅色填滿橢圓形。

SolidBrush mySolidBrush(Color(255, 255, 0, 0));
myGraphics.FillEllipse(&mySolidBrush, 0, 0, 60, 40);

請注意,在上述範例中,筆刷的類型為 SolidBrush,其繼承自 Brush

影線筆刷

當您使用影線筆刷填滿圖形時,您可以指定前景色彩、背景色彩和影線樣式。 前景色彩是影線的色彩。

HatchBrush myHatchBrush(
   HatchStyleVertical, 
   Color(255, 0, 0, 255),
   Color(255, 0, 255, 0));

GDI+ 提供超過 50 個影線樣式,指定于 HatchStyle中。 下圖所示的三個樣式為 Horizontal、ForwardDiagonal 和 Cross。

圖例顯示三個藍綠色橢圓形,各有不同的影線樣式

 

紋理筆刷

使用紋理筆刷,您可以使用儲存在點陣圖中的圖樣來填滿圖形。 例如,假設下圖儲存在名為 MyTexture.bmp 的磁片檔案中。

填滿各種色彩的小型方形螢幕擷取畫面

下列範例會重複儲存在 MyTexture.bmp 中的圖片,以填滿省略號。

Image myImage(L"MyTexture.bmp");
TextureBrush myTextureBrush(&myImage);
myGraphics.FillEllipse(&myTextureBrush, 0, 0, 100, 50);

下圖顯示填滿的橢圓形。

此圖顯示以先前定義的模式填滿的省略號

 

漸層筆刷

您可以使用漸層筆刷來填滿圖案,其色彩會逐漸從圖形的某個部分變更為另一個部分。 例如,當您從圖形左側移至右側時,水準漸層筆刷會變更色彩。 下列範例會以水準漸層筆刷填滿橢圓形,當您從橢圓形左側移至右側時,會從藍色變更為綠色。

LinearGradientBrush myLinearGradientBrush(
   myRect,
   Color(255, 0, 0, 255),
   Color(255, 0, 255, 0),
   LinearGradientModeHorizontal);
myGraphics.FillEllipse(&myLinearGradientBrush, myRect); 

下圖顯示填滿的橢圓形。

顯示橢圓形的圖例,其中包含漸層填滿:右邊為綠色的藍色

路徑漸層筆刷可以設定為在您從圖形中心移至界限時變更色彩。

中央深藍色橢圓形的擷取,陰影為邊緣的淺藍色

路徑漸層筆刷相當有彈性。 下圖中用來填滿三角形的漸層筆刷會逐漸從中央的紅色變更為頂點上三種不同色彩中的每一種。

中央紅色三角形的圖例,在每個頂點以不同色彩網底顯示