方法 : イメージを並べたパターンによって図形を塗りつぶす

床の上にタイルを並べて配置するように、四角形のイメージを隣り合わせに配置して、図形を塗りつぶすことができます。 イメージを並べたパターンで図形の内側を塗りつぶすには、テクスチャ ブラシを使用します。 TextureBrush オブジェクトを構築するときは、Image オブジェクトが引数の 1 つとしてコンストラクターに渡されます。 テクスチャ ブラシを使用して図形の内側を塗りつぶす場合、対象の図形は、このイメージのコピーを繰り返したパターンによって塗りつぶされます。

TextureBrush オブジェクトのラップ モード プロパティは、四角形のグリッド内でイメージをどのように繰り返すかを決定します。 グリッド内のすべてのイメージを同じ向きで配置することも、イメージをグリッド位置から次のグリッド位置に移動するにつれて反転させていくこともできます。 反転は、水平方向、垂直方向、その両方向で行うことができます。 各種の方法でイメージを反転させて並べたパターンによって図形を塗りつぶす例を次に示します。

イメージを並べて表示するには

  • 次の例では、75 × 75 のイメージを並べたパターンを使用して、200 × 200 の四角形を塗りつぶします。

並べて表示 1

  • 次の図は、イメージを並べたパターンによって、四角形がどのように塗りつぶされるかを示しています。 すべてのイメージの向きは同じで、いずれも反転されていません。

並べて表示 2

        Dim image As New Bitmap("HouseAndTree.gif")
        Dim tBrush As New TextureBrush(image)
        Dim blackPen As New Pen(Color.Black)
        e.Graphics.FillRectangle(tBrush, New Rectangle(0, 0, 200, 200))
        e.Graphics.DrawRectangle(blackPen, New Rectangle(0, 0, 200, 200))

Image image = new Bitmap("HouseAndTree.gif");
TextureBrush tBrush = new TextureBrush(image);
Pen blackPen = new Pen(Color.Black);
e.Graphics.FillRectangle(tBrush, new Rectangle(0, 0, 200, 200));
e.Graphics.DrawRectangle(blackPen, new Rectangle(0, 0, 200, 200));

並べて表示するときにイメージを水平方向に反転させるには

  • 次の例では、同じ 75 × 75 のイメージを並べたパターンを使用して、200 × 200 の四角形を塗りつぶします。 ただし、ラップ モードが、イメージを水平方向に反転するように設定されています。 次の図は、イメージを並べたパターンによって、四角形がどのように塗りつぶされるかを示しています。 あるイメージから横方向の次の位置にあるイメージに移るときに、イメージが水平方向に反転されます。

並べて表示 3

        Dim image As New Bitmap("HouseAndTree.gif")
        Dim tBrush As New TextureBrush(image)
        Dim blackPen As New Pen(Color.Black)
        tBrush.WrapMode = WrapMode.TileFlipX
        e.Graphics.FillRectangle(tBrush, New Rectangle(0, 0, 200, 200))
        e.Graphics.DrawRectangle(blackPen, New Rectangle(0, 0, 200, 200))

Image image = new Bitmap("HouseAndTree.gif");
TextureBrush tBrush = new TextureBrush(image);
Pen blackPen = new Pen(Color.Black);
tBrush.WrapMode = WrapMode.TileFlipX;
e.Graphics.FillRectangle(tBrush, new Rectangle(0, 0, 200, 200));
e.Graphics.DrawRectangle(blackPen, new Rectangle(0, 0, 200, 200));

並べて表示するときにイメージを垂直方向に反転させるには

  • 次の例では、同じ 75 × 75 のイメージを並べたパターンを使用して、200 × 200 の四角形を塗りつぶします。 ただし、ラップ モードが、イメージを垂直方向に反転するように設定されています。

            Dim image As New Bitmap("HouseAndTree.gif")
            Dim tBrush As New TextureBrush(image)
            Dim blackPen As New Pen(Color.Black)
            tBrush.WrapMode = WrapMode.TileFlipY
            e.Graphics.FillRectangle(tBrush, New Rectangle(0, 0, 200, 200))
            e.Graphics.DrawRectangle(blackPen, New Rectangle(0, 0, 200, 200))
    
    
    Image image = new Bitmap("HouseAndTree.gif");
    TextureBrush tBrush = new TextureBrush(image);
    Pen blackPen = new Pen(Color.Black);
    tBrush.WrapMode = WrapMode.TileFlipY;
    e.Graphics.FillRectangle(tBrush, new Rectangle(0, 0, 200, 200));
    e.Graphics.DrawRectangle(blackPen, new Rectangle(0, 0, 200, 200));
    

並べて表示するときにイメージを水平方向と垂直方向に反転させるには

  • 次の例では、同じ 75 × 75 のイメージを並べたパターンを使用して、200 × 200 の四角形を塗りつぶします。 ラップ モードは、イメージを水平方向と垂直方向の両方向に反転させるように設定されています。 次の図は、イメージを並べたパターンによって、四角形がどのように塗りつぶされるかを示しています。 あるイメージから横方向の次の位置にあるイメージに移るときに、イメージが水平方向に反転され、あるイメージから縦方向の次の位置にあるイメージに移るときに、イメージが垂直方向に反転されます。

並べて表示 5

        Dim image As New Bitmap("HouseAndTree.gif")
        Dim tBrush As New TextureBrush(image)
        Dim blackPen As New Pen(Color.Black)
        tBrush.WrapMode = WrapMode.TileFlipXY
        e.Graphics.FillRectangle(tBrush, New Rectangle(0, 0, 200, 200))
        e.Graphics.DrawRectangle(blackPen, New Rectangle(0, 0, 200, 200))

Image image = new Bitmap("HouseAndTree.gif");
TextureBrush tBrush = new TextureBrush(image);
Pen blackPen = new Pen(Color.Black);
tBrush.WrapMode = WrapMode.TileFlipXY;
e.Graphics.FillRectangle(tBrush, new Rectangle(0, 0, 200, 200));
e.Graphics.DrawRectangle(blackPen, new Rectangle(0, 0, 200, 200));

参照

その他の技術情報

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