Compartilhar via


Como preencher uma forma com instâncias de uma imagem organizadas lado a lado

Assim como os azulejos podem ser colocados lado a lado para cobrir um piso, imagens retangulares podem ser colocadas lado a lado para preencher (azulejar) uma forma. Para estilar o interior de uma forma, use um pincel de textura. Quando você constrói um objeto TextureBrush, um dos argumentos que você passa para o construtor é um objeto Image. Quando você usa o pincel de textura para pintar o interior de uma forma, a forma é preenchida com cópias repetidas dessa imagem.

A propriedade de modo de encapsulamento do objeto TextureBrush determina como a imagem é orientada conforme ela é repetida em uma grade retangular. Você pode fazer com que todos os blocos na grade tenham a mesma orientação ou fazer a imagem virar de uma posição de grade para a próxima. A inversão pode ser horizontal, vertical ou ambas. Os exemplos a seguir demonstram organização lado a lado com tipos diferentes de inversão.

Organizar uma imagem lado a lado

  • Este exemplo usa a imagem de 75 × 75 a seguir para organização lado a lado em um retângulo de 200 × 200.

A imagem do azulejo que mostra uma casa vermelha e uma árvore.

  • A ilustração a seguir mostra como o retângulo é organizado lado a lado com a imagem. Observe que todos os blocos têm a mesma orientação; não há giro.

Um retângulo preenchido com instâncias da imagem lado a lado, usando a mesma orientação para todas as instâncias.

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

Inverter uma imagem horizontalmente com organização lado a lado

  • Este exemplo usa a mesma imagem de 75×75 para preencher um retângulo 200×200. O modo de encapsulamento é definido para inverter a imagem horizontalmente. A ilustração a seguir mostra como o retângulo é telado com a imagem. Observe que, à medida que você move de um bloco para o próximo em uma determinada linha, a imagem é invertida horizontalmente.

Um retângulo ladrilhado com a imagem invertida horizontalmente.

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

Inverter uma imagem verticalmente com organização lado a lado

  • Este exemplo usa a mesma imagem de 75×75 para preencher um retângulo 200×200. O modo de encapsulamento é definido para inverter a imagem verticalmente.

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

Inverter uma imagem horizontalmente e verticalmente com organização lado a lado

  • Este exemplo usa a mesma imagem 75×75 para estilar um retângulo 200×200. O modo de encapsulamento é definido para inverter a imagem horizontal e verticalmente. A ilustração a seguir mostra como a imagem é disposta lado a lado no retângulo. Observe que, à medida que você move de um bloco para o outro em uma determinada linha, a imagem é invertida horizontalmente e, à medida que você move de um bloco para o outro em uma determinada coluna, a imagem é invertida verticalmente.

Um retângulo com instâncias lado a lado da imagem, invertidas horizontal e verticalmente.

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

Consulte também