GDI+ でのブラシと塗りつぶされた図形

四角形や楕円などの閉じた図形は、枠線と内部で構成されます。 枠線はペンで描画され、内部はブラシで塗りつぶされます。 GDI+ には、閉じた図形の内部を塗りつぶすためのブラシ クラスがいくつか用意されています: SolidBrushHatchBrushTextureBrushLinearGradientBrush、および PathGradientBrush。 これらのクラスはすべて、Brush クラスから継承されたものです。 次の図は、単色ブラシで塗りつぶされた四角形と、ハッチ ブラシで塗りつぶされた楕円を示しています。

Screenshot of a rectangle filled with a solid brush and an ellipse filled with a hatch brush.

単色ブラシ

閉じた図形を塗りつぶすには、Graphics クラスのインスタンスと Brush が必要です。 Graphics クラスのインスタンスには、FillRectangleFillEllipse などのメソッドが用意されています。Brush には、塗りつぶしの属性 (色やパターンなど) が格納されます。 Brush は、引数の 1 つとして塗りつぶしメソッドに渡されます。 次のコード例では、単色の赤で塗りつぶす方法を示します。

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)

注意

上記の例のブラシの種類は、Brush から継承された SolidBrush です。

ハッチ ブラシ

ハッチ ブラシを使用して図形を塗りつぶす場合は、前景色、背景色、およびハッチ スタイルを指定します。 前景色はハッチの色を表します。

HatchBrush myHatchBrush =
   new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);
Dim myHatchBrush As _
   New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)

GDI+ には 50 を超えるハッチ スタイルがあります。次の図に示す 3 つのスタイルは、HorizontalForwardDiagonal、および Cross です。

Screenshot of three ellipses that are filled with a horizontal hatch brush, forward diagonal hatch brush, and a cross hatch brush.

テクスチャ ブラシ

テクスチャ ブラシを使用すると、ビットマップに格納されているパターンで図形を塗りつぶすことができます。 たとえば、次の画像が MyTexture.bmp という名前のディスク ファイルに格納されているとします。

Screenshot of the My Texture dot b m p file.

次のコード例では、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)

次の図に、塗りつぶされた楕円を示します。

Screenshot of an ellipse that is filled with a texture brush.

グラデーション ブラシ

GDI+ には、線状とパスという 2 種類のグラデーション ブラシが用意されています。 線状グラデーション ブラシを使用すると、図形を水平方向、垂直方向、または対角線方向に移動するにつれて徐々に変化する色で図形を塗りつぶすことができます。 次のコード例では、楕円の左端から右端に移動するにつれて青から緑に変化する水平グラデーション ブラシを使用して楕円を塗りつぶす方法を示しています。

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)

次の図に、塗りつぶされた楕円を示します。

Screenshot of an ellipse filled with a horizontal gradient brush.

パス グラデーション ブラシは、図形の中心から端に向かって移動するに従って色が変化するように構成することができます。

Screenshot of an ellipse filled with a path gradient brush.

パス グラデーション ブラシには非常に柔軟性があります。 次の図の三角形の塗りつぶしに使用したグラデーション ブラシは、中心の赤色から各頂点の 3 つの異なる色に徐々に変化しています。

Screenshot of a triangle filled with a path gradient brush.

関連項目