次の方法で共有


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

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

使用例

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

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

注意

次の例では、イメージのサイズが 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 が必要です。

参照

その他の技術情報

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