ブラシと図形の塗りつぶし
四角形や楕円などの閉じた図形は、アウトラインと内部で構成されます。 アウトラインは Pen オブジェクトで描画され、内部は Brush オブジェクトで塗りつぶされます。 Windows GDI+ には、閉じた図形の内部を塗りつぶすブラシ クラスがいくつか用意されています。 SolidBrush、 HatchBrush、 TextureBrush、 LinearGradientBrush、 PathGradientBrush です。 これらのクラスはすべて Brush クラスから継承されます。 次の図は、単色ブラシで塗りつぶされた四角形と、ハッチ ブラシで塗りつぶされた楕円を示しています。
単色ブラシ
閉じた図形を塗りつぶすには、 Graphics オブジェクトと Brush オブジェクトが必要です。 Graphics オブジェクトは FillRectangle や FillEllipse などのメソッドを提供し、Brush オブジェクトは塗りつぶしの属性 (色やパターンなど) を格納します。 Brush オブジェクトのアドレスは、引数の 1 つとして fill メソッドに渡されます。 次の使用例は、楕円に赤い純色を塗りつぶします。
SolidBrush mySolidBrush(Color(255, 255, 0, 0));
myGraphics.FillEllipse(&mySolidBrush, 0, 0, 60, 40);
前の例では、ブラシは Brush から継承される SolidBrush 型であることに注意 してください。
ハッチ ブラシ
ハッチ ブラシを使用して図形を塗りつぶす場合は、前景色、背景色、およびハッチ スタイルを指定します。 前景色はハッチの色を表します。
HatchBrush myHatchBrush(
HatchStyleVertical,
Color(255, 0, 0, 255),
Color(255, 0, 255, 0));
GDI+ には、 HatchStyle で指定された 50 を超えるハッチ スタイルが用意されています。 次の図に示す 3 つのスタイルは、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);
次の図は、塗りつぶされた楕円を示したものです。
図形の中心から境界に向かって移動する際に、色を変更するようにパス グラデーション ブラシを構成できます。
パス グラデーション ブラシには非常に柔軟性があります。 次の図の三角形の塗りつぶしに使用したグラデーション ブラシは、中心の赤色から各頂点の 3 つの異なる色に徐々に変化しています。