Cómo: Disponer una forma en mosaico con una imagen
De la misma manera que se forma un mosaico poniendo unas piezas al lado de las otras, las imágenes rectangulares se pueden disponer unas al lado de otras de manera que rellenen una forma, constituyendo un mosaico. Para organizar en mosaico el interior de una forma, utilice un pincel de textura. Cuando se crea un objeto TextureBrush, uno de los argumentos que se pasa al constructor es un objeto Image. Cuando se usa el pincel de textura para pintar el interior de una forma, ésta se rellena con copias repetidas de esta imagen.
La propiedad del modo de ajuste del objeto TextureBrush determina cómo se orienta la imagen cuando se repite en una cuadrícula rectangular. Todas las piezas de mosaico de la cuadrícula pueden tener la misma orientación o se puede voltear la imagen desde una posición de la cuadrícula hasta la siguiente. El volteo puede ser horizontal, vertical o ambas cosas. En los ejemplos siguientes se muestran disposiciones en mosaico con distintos tipos de volteo.
Para disponer una imagen en mosaico
- En este ejemplo se utiliza la siguiente imagen de 75×75 para disponer en mosaico un rectángulo de 200×200.
- En la siguiente ilustración se muestra cómo se organiza en mosaico el rectángulo con la imagen. Observe que todas las piezas tienen la misma orientación; no hay volteo.
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))
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));
Para voltear una imagen horizontalmente al disponerla en mosaico
- En este ejemplo se utiliza la misma imagen de 75×75 para disponer en mosaico un rectángulo de 200×200. El modo de ajuste se ha establecido para voltear horizontalmente la imagen. En la siguiente ilustración se muestra cómo se organiza en mosaico el rectángulo con la imagen. Observe que, al desplazarse de una pieza a la siguiente de una misma fila, la imagen se voltea horizontalmente.
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))
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));
Para voltear una imagen verticalmente al disponerla en mosaico
En este ejemplo se utiliza la misma imagen de 75×75 para disponer en mosaico un rectángulo de 200×200. El modo de ajuste se ha establecido para voltear verticalmente la imagen.
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))
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));
Para voltear una imagen horizontal y verticalmente al disponerla en mosaico
- En este ejemplo se utiliza la misma imagen de 75×75 para disponer en mosaico un rectángulo de 200×200. El modo de ajuste se ha establecido para voltear la imagen horizontal y verticalmente. En la siguiente ilustración se muestra cómo se organiza en mosaico el rectángulo con la imagen. Observe que al desplazarse de una pieza a la siguiente en la misma fila, la imagen se voltea horizontalmente y al desplazarse de una pieza a la siguiente en la misma columna la imagen se voltea verticalmente.
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))
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));