如何:在形状中平铺图像

正如瓷砖可一块挨一块地放置以覆盖地面一样,矩形图像也可一个挨一个地放置以填充(平铺)形状。 若要平铺形状的内部,请使用纹理画笔。 在构造 TextureBrush 对象时,传递给构造函数的一个参数是 Image 对象。 在使用纹理画笔为形状的内部涂色时,将用该图像的重复副本填充该形状。

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

请参见

其他资源

使用画笔填充形状