Обливание фигуры с помощью изображения
По аналогии с укладкой мозаики одна к другой при заполнении пола прямоугольные изображения можно укладывать одно к другому, чтобы заполнить фигуру. Для мозаичного заполнения внутренней части фигуры используется текстурная кисть. При создании объекта 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));
На рисунке ниже показано, как прямоугольник заполняется изображением (мозаичное заполнение). Обратите внимание, что при переходе от элемента к элементу в рядах мозаичной сетки изображение переворачивается зеркально по горизонтали, а при переходе от элемента к элементу в столбцах — по вертикали.