Практическое руководство. Мозаичное заполнение фигуры заданным изображениемHow to: Tile a Shape with an Image

Так же, как плитки можно поместить рядом друг с другом, чтобы охватить этаж, прямоугольные изображения можно поместить рядом друг с другом, чтобы заполнить фигуру (мозаичное заполнение).Just as tiles can be placed next to each other to cover a floor, rectangular images can be placed next to each other to fill (tile) a shape. Чтобы замостить внутреннюю часть фигуры, используйте текстурную кисть.To tile the interior of a shape, use a texture brush. При создании TextureBrush объекта один из аргументов, передаваемых в конструктор, является Image объектом.When you construct a TextureBrush object, one of the arguments you pass to the constructor is an Image object. При использовании кисти текстуры для заполнения внутренней фигуры фигура заполняется повторяющимися копиями этого изображения.When you use the texture brush to paint the interior of a shape, the shape is filled with repeated copies of this image.

Свойство режима обертывания TextureBrush объекта определяет ориентацию изображения, так как оно повторяется в прямоугольной сетке.The wrap mode property of the TextureBrush object determines how the image is oriented as it is repeated in a rectangular grid. Можно сделать так, чтобы все плитки в сетке имели одинаковую ориентацию, или можно сделать изображение отражаться от одного расположения сетки до следующего.You can make all the tiles in the grid have the same orientation, or you can make the image flip from one grid position to the next. Зеркальное отображение может быть горизонтальным, вертикальным или обоими.The flipping can be horizontal, vertical, or both. В следующих примерах демонстрируется мозаичное заполнение различными типами переворачивания.The following examples demonstrate tiling with different types of flipping.

Мозаичное заполнение изображенияTo tile an image

  • В этом примере для мозаичного заполнения прямоугольника размером 200 × 200 используется следующий рисунок 75 х 75.This example uses the following 75×75 image to tile a 200×200 rectangle.

Изображение плитки, показывающее Красный дом и дерево.

  • На следующем рисунке показано, как прямоугольник заполняется изображением.The following illustration shows how the rectangle is tiled with the image. Обратите внимание, что все плитки имеют одинаковую ориентацию. Зеркальное отображение отсутствует.Note that all tiles have the same orientation; there is no flipping.

Прямоугольник, мозаичный с изображением с одинаковой ориентацией для всех плиток.

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

Отражение изображения по горизонтали при мозаичном заполненииTo flip an image horizontally while tiling

  • В этом примере используется то же изображение размером 75 × 75 для заполнения прямоугольника 200 × 200.This example uses the same 75×75 image to fill a 200×200 rectangle. Режим переноса установлен для перелистывания изображения по горизонтали.The wrap mode is set to flip the image horizontally. На следующем рисунке показано, как прямоугольник заполняется изображением.The following illustration shows how the rectangle is tiled with the image. Обратите внимание, что при переходе от одной плитки к следующей в определенной строке изображение помещается по горизонтали.Note that as you move from one tile to the next in a given row, the image is flipped horizontally.

Прямоугольник, мозаичный с изображением, перевернутым по горизонтали.

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

Отражение изображения по вертикали при мозаичном заполненииTo flip an image vertically while tiling

  • В этом примере используется то же изображение размером 75 × 75 для заполнения прямоугольника 200 × 200.This example uses the same 75×75 image to fill a 200×200 rectangle. Режим переноса установлен для вертикальной перелистывания изображения.The wrap mode is set to flip the image vertically.

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

Отражение изображения по горизонтали и вертикали при мозаичном заполненииTo flip an image horizontally and vertically while tiling

  • В этом примере используется то же изображение размером 75 × 75 для мозаичного заполнения прямоугольника 200 × 200.This example uses the same 75×75 image to tile a 200×200 rectangle. Режим переноса установлен для отражения изображения как по горизонтали, так и по вертикали.The wrap mode is set to flip the image both horizontally and vertically. На следующем рисунке показано мозаичное заполнение прямоугольника изображением.The following illustration shows how the rectangle is tiled by the image. Обратите внимание, что при переходе от одной плитки к следующей в определенной строке изображение помещается по горизонтали, а при переходе от одной плитки к другой в заданном столбце изображение помещается по вертикали.Note that as you move from one tile to the next in a given row, the image is flipped horizontally, and as you move from one tile to the next in a given column, the image is flipped vertically.

Прямоугольник, мозаичный с изображением, перевернутым по горизонтали и вертикали.

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

См. такжеSee also