如何:在形状中平铺图像
更新:2007 年 11 月
正如瓷砖可一块挨一块地放置以覆盖地面一样,矩形图像也可一个挨一个地放置以填充(平铺)形状。若要平铺形状的内部,请使用纹理画笔。在构造 TextureBrush 对象时,传递给构造函数的一个参数是 Image 对象。在使用纹理画笔为形状的内部涂色时,将用该图像的重复副本填充该形状。
TextureBrush 对象的覆盖模式属性确定图像在矩形网格中重复时的定向方式。既可让网格中所有平铺图像的方向都相同,也可让平铺图像在相邻网格间翻转。可水平或垂直翻转,也可同时进行水平和垂直翻转。下面的示例演示用不同类型的翻转进行平铺。
平铺图像
- 该示例使用下面的 75×75 图像来平铺 200×200 的矩形。
- 下面的插图显示如何使用图像平铺此矩形。请注意,所有的平铺图像都采用相同的方向,没有翻转。
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 的矩形。覆盖模式被设置为水平翻转图像。下面的插图显示如何使用图像平铺此矩形。请注意,在给定行中从一个平铺图像移到下一个时,图像将水平翻转。
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 的矩形。覆盖模式被设置为同时在水平和垂直方向翻转图像。下面的插图显示如何使用图像平铺此矩形。请注意,在给定行中从一个平铺图像移到下一个时,图像将水平翻转;在给定列中从一个平铺图像移到下一个时,图像将被垂直翻转。
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));