閉合的形狀(例如,矩形或橢圓)由輪廓和內部組成。輪廓用鋼筆繪製,內部用畫刷填充。GDI+提供了幾種用於填充閉合形狀內部的畫刷類:SolidBrush、HatchBrush、TextureBrush和GradientBrush。所有這些類都是從Brush類繼承的。
1.使用實心畫刷
要填充閉合圖形,需要有Graphics對象和Brush對象。Graphics對象提供 FillRectangle和FillEllipse這樣的方法,Brush對象存儲填充的屬性,如顏色和圖案。Brush對象作爲參數之一被傳遞到填充方法。例如用純紅色填充橢圓:
SolidBrush sb(Color(100,100,100,100));
g.FillEllipse(&sb,10,10,100,100);
g.FillEllipse(&sb,10,10,100,100);
效果圖:
2.使用陰影畫刷
用陰影畫刷填充圖形時,要指定前景色、背景色和陰影樣式。前景色是陰影的顏色。
HatchBrush hb(HatchStyleHorizontalBrick , Color.Black, Color.Gray);
g.FillRectangle(&hb,50,150,150,120);
GDI+提供了50多種陰影樣式
效果圖:
3.使用紋理畫刷
有了紋理畫刷,就可以用位圖中存儲的圖案來填充圖形。例如,假定在磁盤中存儲了一個名爲MyTexture.bmp的圖片,下面的代碼通過使用MyTexture.bmp中的圖片來填充橢圓。
Image myImage(L"brush.bmp");
TextureBrush th (&myImage);
g.FillEllipse(&th, 50, 300, 150, 120);
TextureBrush th (&myImage);
g.FillEllipse(&th, 50, 300, 150, 120);
效果:
4.使用漸變畫刷
GDI+提供兩種漸變畫刷:線性和路徑。可以使用線性漸變畫刷來用顏色(在橫向、縱向或斜向移過圖形時會逐漸變化的顏色)填充圖形。
下面的示例用水平漸變畫刷填充一個橢圓,當從橢圓的左邊緣向右邊緣移動時畫刷顏色會由藍變綠。
LinearGradientBrush lgb(
Point(50,450),
Point(200,450),
Color.Blue,
Color.Green);
g.FillEllipse(&lgb,50,450,150,120);
Point(50,450),
Point(200,450),
Color.Blue,
Color.Green);
g.FillEllipse(&lgb,50,450,150,120);
效果圖: