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


Заполнение фигуры изображением

Так же, как плитки можно разместить рядом друг с другом, чтобы покрыть пол, прямоугольные изображения можно разместить рядом друг с другом, чтобы заполнить (плитку) фигуру. Чтобы заложить внутреннюю поверхность фигуры, используйте текстурную кисть. При создании объекта TextureBrush один из аргументов, которые вы передаете конструктору, — это адрес объекта Image. При использовании кисти текстуры для рисования внутренности фигуры, фигура заполняется повторяющимися копиями этого изображения.

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

Создание изображения

В этом примере для покрытия прямоугольника 200 × 200 плитками используется следующее изображение размером 75 × 75:

иллюстрация, используемая в качестве основы других иллюстраций в этом разделе: дом и дерево на фоне и в центре прямоугольника

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

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

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