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

更新 : 2007 年 11 月

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

塗りつぶされた図形

ソリッド ブラシ

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

Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)

SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);
メモ :

上記の例のブラシは SolidBrush 型で、Brush から継承されています。

ハッチ ブラシ

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

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

HatchBrush myHatchBrush =
   new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);

GDI+ には、50 種類を超えるハッチ スタイルが用意されています。HorizontalForwardDiagonal、および Cross の 3 つのスタイルを次の図に示します。

塗りつぶされた図形

テクスチャ ブラシ

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

塗りつぶされた図形

MyTexture.bmp に格納されているピクチャを繰り返して楕円を塗りつぶすコード例を次に示します。

Dim myImage As Image = Image.FromFile("MyTexture.bmp")
Dim myTextureBrush As New TextureBrush(myImage)
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50)

Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);

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

塗りつぶされた図形

グラデーション ブラシ

GDI+ には、線形とパスの 2 種類のグラデーション ブラシが用意されています。線形グラデーション ブラシを使用すると、図形内を横方向、縦方向、または対角線方向に移動するのに応じて色を段階的に変化させながら図形を塗りつぶすことができます。楕円の左端から右端へ移動するのに応じて、青から緑へ変化する横方向のグラデーション ブラシを使用して楕円を塗りつぶすコード例を次に示します。

Dim myLinearGradientBrush As New LinearGradientBrush( _
   myRectangle, _
   Color.Blue, _
   Color.Green, _
   LinearGradientMode.Horizontal)
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle)

LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
   myRectangle,
   Color.Blue,
   Color.Green,
   LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);

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

塗りつぶされた図形

パス グラデーション ブラシは、図形の中央から外縁に向かって移動するのに応じて色が変化するように設定できます。

塗りつぶされた図形

パス グラデーション ブラシは、柔軟性の高いブラシです。グラデーション ブラシを使用して、中央の赤から頂点の 3 つの異なる色へ色が段階的に変化するように三角形を塗りつぶす例を次の図に示します。

塗りつぶされた図形

参照

処理手順

方法 : Windows フォームに塗りつぶした四角形を描画する

方法 : Windows フォームに塗りつぶした楕円を描画する

参照

System.Drawing.SolidBrush

System.Drawing.Drawing2D.HatchBrush

System.Drawing.TextureBrush

System.Drawing.Drawing2D.LinearGradientBrush

その他の技術情報

直線、曲線、および図形