使用图像平铺形状

就像瓷砖可以一块紧挨着一块铺在地面上,矩形图像也可以一个挨着一个填充(平铺)到形状中。 若要平铺形状的内部,请使用纹理画笔。 构造 TextureBrush 对象时,传递给构造函数的参数之一是 Image 对象的地址。 使用纹理画笔绘制形状内部时,将在形状中填充此图像的重复副本。

TextureBrush 对象的包装模式属性确定图像在矩形网格中重复时的方向。 你可以使网格中的所有图块具有相同的方向,也可以让图像从一个网格位置翻转到另一个网格位置。 翻转可以沿水平方向、垂直方向或水平垂直方向。 以下示例演示了采用不同翻转类型的平铺操作。

平铺图像

此示例使用以下 75 ×75 图像平铺 200 ×200 矩形:

用作本主题中其他插图基础的插图:背景上的房子和树,居中位于矩形中

Image image(L"HouseAndTree.png");
TextureBrush tBrush(&image);
Pen blackPen(Color(255, 0, 0, 0));
stat = graphics.FillRectangle(&tBrush, Rect(0, 0, 200, 200));
stat = graphics.DrawRectangle(&blackPen, Rect(0, 0, 200, 200));

下图显示了如何使用图像平铺矩形。 注意,所有图块的方向都一样;没有翻转。

显示基础图像在大矩形中水平和垂直重复的插图

 

平铺时水平翻转图像

此示例使用 75 ×75 图像填充 200 ×200 矩形。 环绕模式设置为水平翻转图像。

Image image(L"HouseAndTree.png");
TextureBrush tBrush(&image);
Pen blackPen(Color(255, 0, 0, 0));
stat = tBrush.SetWrapMode(WrapModeTileFlipX);
stat = graphics.FillRectangle(&tBrush, Rect(0, 0, 200, 200));
stat = graphics.DrawRectangle(&blackPen, Rect(0, 0, 200, 200));

下图显示了如何使用图像平铺矩形。 请注意,从指定行中的一个图块移动到下一个图块时,图像将水平翻转。

显示水平重复的基础图像,但偶数实例水平反转的插图

 

平铺时垂直翻转图像

此示例使用 75 ×75 图像填充 200 ×200 矩形。 环绕模式设置为垂直翻转图像。

Image image(L"HouseAndTree.png");
TextureBrush tBrush(&image);
Pen blackPen(Color(255, 0, 0, 0));
stat = tBrush.SetWrapMode(WrapModeTileFlipY);
stat = graphics.FillRectangle(&tBrush, Rect(0, 0, 200, 200));
stat = graphics.DrawRectangle(&blackPen, Rect(0, 0, 200, 200));

下图显示了如何使用图像平铺矩形。 请注意,在给定列中从一个磁贴移动到下一个磁贴时,图像将垂直翻转。

插图显示基础图像水平和垂直重复,但偶数行垂直反转

 

平铺时水平和垂直翻转图像

此示例使用 75 ×75 图像平铺 200 ×200 矩形。 环绕模式设置为水平垂直翻转图像。

Image image(L"HouseAndTree.png");
TextureBrush tBrush(&image);
Pen blackPen(Color(255, 0, 0, 0));
stat = tBrush.SetWrapMode(WrapModeTileFlipXY);
stat = graphics.FillRectangle(&tBrush, Rect(0, 0, 200, 200));
stat = graphics.DrawRectangle(&blackPen, Rect(0, 0, 200, 200));

下图显示了图像是如何平铺矩形的。 注意,当你从指定行中的一个图块移动到下一个图块时,图像将水平翻转,当你从指定列中的一个图块移动到下一个图块时,图像将垂直翻转。

显示每行中基础图像的交替实例水平翻转,交替行垂直翻转的插图