方法: イメージ テクスチャによって図形を塗りつぶす

Image クラスと TextureBrush クラスを使用して、閉じた図形をテクスチャで塗りつぶすことができます。

次の例では、楕円を画像で塗りつぶしています。 このコードでは、Image オブジェクトを構築し、その Image オブジェクトのアドレスを引数として TextureBrush コンストラクターに渡します。 3 つ目のステートメントで画像を縮小し、4 つ目のステートメントでは、縮小された画像の繰り返しコピーで楕円を塗りつぶします。

次のコードの Transform プロパティには、画像が描画される前に適用される変換が含まれています。 元の画像の幅は 640 ピクセル、高さは 480 ピクセルであると仮定しています。 この変換では、水平方向と垂直方向の縮小値を設定することで、画像を 75×75 に縮小します。

注意

次の例では、画像のサイズが 75×75 で、楕円のサイズが 150×250 です。 塗りつぶされる楕円よりも画像が小さいため、楕円には画像が並べて表示されます。 並べて表示するというのは、図形の境界に到達するまで、画像が水平方向と垂直方向に繰り返して表示されることを意味します。 並べて表示する操作の詳細については、「方法 : イメージを並べたパターンによって図形を塗りつぶす」を参照してください。

Image image = new Bitmap("ImageFile.jpg");
TextureBrush tBrush = new TextureBrush(image);
tBrush.Transform = new Matrix(
   75.0f / 640.0f,
   0.0f,
   0.0f,
   75.0f / 480.0f,
   0.0f,
   0.0f);
e.Graphics.FillEllipse(tBrush, new Rectangle(0, 150, 150, 250));
Dim image As New Bitmap("ImageFile.jpg")
Dim tBrush As New TextureBrush(image)
tBrush.Transform = New Matrix( _
   75.0F / 640.0F, _
   0.0F, _
   0.0F, _
   75.0F / 480.0F, _
   0.0F, _
   0.0F)
e.Graphics.FillEllipse(tBrush, New Rectangle(0, 150, 150, 250))

コードのコンパイル

前の例は、Windows フォームで使用するために設計されていて、PaintEventArgs イベント ハンドラーのパラメーターである ePaint を必要とします。

関連項目