Condividi tramite


Come piastrellare una forma con un'immagine

Così come le piastrelle possono essere posizionate l'una accanto all'altra per coprire un pavimento, le immagini rettangolari possono essere posizionate l'una accanto all'altra per tassellare una forma. Per riempire l'interno di una forma, usare un pennello di texture. Quando si costruisce un oggetto TextureBrush, uno degli argomenti passati al costruttore è un oggetto Image. Quando utilizzi il pennello per texture per dipingere l'interno di una forma, essa viene riempita con copie ripetute di questa immagine.

La proprietà modalità di ripetizione dell'oggetto TextureBrush determina il modo in cui l'immagine viene orientata mentre viene ripetuta in una griglia rettangolare. È possibile fare in modo che tutti i riquadri nella griglia abbiano lo stesso orientamento oppure è possibile capovolgere l'immagine da una posizione della griglia alla successiva. Lo scorrimento può essere orizzontale, verticale o entrambi. I seguenti esempi dimostrano la tassellatura con diversi tipi di capovolgimento.

Per piastrellare un'immagine

  • In questo esempio viene utilizzata l'immagine 75×75 seguente per affiancare un rettangolo 200×200.

L'immagine della piastrella che mostra una casa rossa e un albero.

  • La figura seguente mostra come il rettangolo viene piastrellato con l'immagine. Si noti che tutte le tessere hanno lo stesso orientamento; non c'è alcun capovolgimento.

Un rettangolo piastrellato con l'immagine, mantenendo la stessa orientazione per tutte le piastrelle.

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

Per capovolgere un'immagine orizzontalmente durante il riquadramento

  • In questo esempio viene utilizzata la stessa immagine 75×75 per riempire un rettangolo 200×200. La modalità di wrap è impostata per capovolgere l'immagine orizzontalmente. La figura seguente mostra come il rettangolo viene riempito con l'immagine. Si noti che quando si passa da un riquadro al successivo in una determinata riga, l'immagine viene capovolta orizzontalmente.

Un rettangolo piastrellato con l'immagine capovolta orizzontalmente.

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

Per capovolgere un'immagine verticalmente mentre si affianca

  • In questo esempio viene utilizzata la stessa immagine 75×75 per riempire un rettangolo 200×200. La modalità di avvolgimento è impostata per capovolgere l'immagine in verticale.

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

Per capovolgere un'immagine orizzontalmente e verticalmente durante la disposizione a mosaico

  • Questo esempio usa la stessa immagine 75×75 per riempire un rettangolo 200×200. La modalità di avvolgimento è impostata per capovolgere l'immagine sia orizzontalmente che verticalmente. La figura seguente mostra come il rettangolo viene affiancato dall'immagine. Si noti che quando si passa da un riquadro all'altro in una determinata riga, l'immagine viene capovolta orizzontalmente e quando si passa da un riquadro al successivo in una determinata colonna, l'immagine viene capovolta verticalmente.

Rettangolo affiancato con l'immagine capovolta orizzontalmente 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))

Vedere anche