Как заложить фигуру изображением
Так же, как плитки можно разместить рядом друг с другом, чтобы покрыть пол, прямоугольные изображения можно разместить рядом друг с другом, чтобы заполнить (плитку) фигуру. Чтобы заполнить внутреннюю часть фигуры плиткой, используйте текстурную кисть. При создании объекта TextureBrush один из аргументов, которые передается конструктору, является объектом Image. При использовании кисти текстуры для рисования внутри фигуры, она заполняется повторяющимися копиями этого изображения.
Свойство режима оболочки объекта TextureBrush определяет, как изображение ориентировано, так как оно повторяется в прямоугольной сетке. Вы можете сделать все плитки в сетке с одинаковой ориентацией или переворачивать изображение из одной позиции сетки в следующую. Переворачивание может быть горизонтальным, вертикальным или одновременно обоими. В следующих примерах демонстрируется укладка плитки с различными типами переворачивания.
Разложить изображение плитками
- В этом примере используется изображение размером 75×75 для заполнения прямоугольника размером 200×200.
- На следующем рисунке показано, как прямоугольник заполняется изображением. Обратите внимание, что все плитки имеют одинаковую ориентацию и не переворачиваются.
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))
Перевернуть изображение по горизонтали при наложении плитки
- В этом примере используется тот же 75×75 образ для заполнения прямоугольника 200×200. Режим обёртки установлен для отражения изображения по горизонтали. На следующем рисунке показано, как прямоугольник заполняется с помощью изображения. Обратите внимание, что при переходе от одной плитки к следующей в заданной строке изображение перевернуто по горизонтали.
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))
Чтобы перевернуть изображение по вертикали во время мозаичного отображения
В этом примере используется тот же 75×75 образ для заполнения прямоугольника 200×200. Режим оболочки настроен для перевернутого изображения по вертикали.
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))
Перевернуть изображение по горизонтали и по вертикали при создании мозаики.
- В этом примере для покрытия прямоугольника размером 200×200 используется то же изображение размером 75×75. Режим обертки установлен для переворачивания изображения как по горизонтали, так и по вертикали. На следующем рисунке показано, как прямоугольник заполняется изображением. Обратите внимание, что при переходе от одной плитки к следующей в заданной строке изображение перевернуто по горизонтали, и при переходе от одной плитки к следующему в заданном столбце изображение перевернуто по вертикали.
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))
См. также
.NET Desktop feedback