Поделиться через


Обливание фигуры с помощью изображения

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

На рисунке ниже показано, как прямоугольник заполняется изображением (мозаичное заполнение). Обратите внимание, что при переходе от элемента к элементу в рядах мозаичной сетки изображение переворачивается зеркально по горизонтали, а при переходе от элемента к элементу в столбцах — по вертикали.

Иллюстрация, показывающая чередующиеся экземпляры базового изображения в каждой строке переворачиваются по горизонтали, а чередующиеся строки переворачиваются по вертикали