Partilhar via


Como Revestir uma Figura com uma Imagem

Assim como os azulejos podem ser colocados um ao lado do outro para cobrir um piso, imagens retangulares podem ser colocadas lado a lado para preencher (em mosaico) uma forma. Para azulejar 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 wrap mode do objeto TextureBrush determina como a imagem é orientada à medida que é repetida numa grelha retangular. Você pode fazer com que todos os blocos na grade tenham a mesma orientação ou pode fazer a imagem girar de uma posição de grade para outra. A inversão pode ser horizontal, vertical ou ambas. Os exemplos a seguir demonstram o mosaico com diferentes tipos de inversão.

Para colocar lado a lado uma imagem

  • Este exemplo usa a seguinte imagem 75×75 para preencher um retângulo de 200×200.

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

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

Um retângulo revestido com a imagem, usando a mesma orientação para todos os azulejos.

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

Para inverter uma imagem horizontalmente enquanto inclina

  • Este exemplo usa a mesma imagem 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 é preenchido com a imagem. Observe que, à medida que você se move de um bloco para o próximo em uma determinada linha, a imagem é invertida horizontalmente.

Um retângulo lado a lado 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))

Para inverter uma imagem verticalmente enquanto inclina

  • Este exemplo usa a mesma imagem 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))
    
    

Para inverter uma imagem horizontal e verticalmente enquanto inclina

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

Um retângulo preenchido com a imagem invertida 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))

Ver também