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

更新 : 2007 年 11 月

Image クラスおよび TextureBrush クラスを使用することによって、閉じている図形をテクスチャで塗りつぶすことができます。

使用例

楕円をイメージで塗りつぶす例を次に示します。このコードは、Image オブジェクトを作成し、その Image オブジェクトのアドレスを TextureBrush コンストラクタに引数として渡します。3 番目のステートメントでそのイメージを縮小し、4 番目のステートメントでは、縮小したイメージのコピーを繰り返したパターンによって楕円を塗りつぶしています。

次のコードでは、Transform プロパティに、イメージが描画される前にそのイメージに適用される変換方法が指定されています。元のイメージの幅が 640 ピクセルで、高さが 480 ピクセルであることを前提とします。この変換では、水平方向と垂直方向のスケーリング値を設定することによって、イメージを 75 × 75 に縮小します。

sssaxczh.alert_note(ja-jp,VS.90).gifメモ :

次の例では、イメージのサイズが 75 × 75 で、楕円のサイズが 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))

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));

コードのコンパイル方法

前述の例は Windows フォームと一緒に使用することが想定されていて、Paint イベント ハンドラのパラメータである PaintEventArgs e が必要です。

参照

その他の技術情報

ブラシを使用した図形の塗りつぶし