Comment : remplir une forme avec une image

Tout comme les vignettes peuvent être placées en regard des unes des autres pour couvrir un plancher, les images rectangulaires peuvent être placées en regard des autres pour remplir (vignette) une forme. Pour mosaïquer l’intérieur d’une forme, utilisez un pinceau de texture. Lorsque vous construisez un TextureBrush objet, l’un des arguments que vous passez au constructeur est un Image objet. Lorsque vous utilisez le pinceau de texture pour peindre l’intérieur d’une forme, la forme est remplie de copies répétées de cette image.

La propriété en mode wrap de l’objet TextureBrush détermine la façon dont l’image est orientée, car elle est répétée dans une grille rectangulaire. Vous pouvez faire en sorte que toutes les vignettes de la grille aient la même orientation, ou vous pouvez faire retourner l’image d’une position de grille à l’autre. Le découpage peut être horizontal, vertical ou les deux. Les exemples suivants illustrent la mosaïne avec différents types de glissement.

Pour vignetter une image

  • Cet exemple utilise l’image 75×75 suivante pour vignetter un rectangle 200×200.

The tile image that shows a red house and a tree.

  • L’illustration suivante montre comment le rectangle est mosaïque avec l’image. Notez que toutes les vignettes ont la même orientation ; il n’y a pas de détourage.

A rectangle tiled with the image using the same orientation for all tiles.

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

Pour retourner une image horizontalement lors du mosaïque

  • Cet exemple utilise la même image 75×75 pour remplir un rectangle 200×200. Le mode wrap est défini pour retourner l’image horizontalement. L’illustration suivante montre comment le rectangle est mosaïque avec l’image. Notez que lorsque vous passez d’une vignette à l’autre dans une ligne donnée, l’image est retournée horizontalement.

A rectangle tiled with the image flipped horizontally.

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

Pour retourner une image verticalement lors du mosaïque

  • Cet exemple utilise la même image 75×75 pour remplir un rectangle 200×200. Le mode wrap est défini pour retourner l’image verticalement.

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

Pour retourner une image horizontalement et verticalement lors du mosaïque

  • Cet exemple utilise la même image 75×75 pour vignetter un rectangle 200×200. Le mode wrap est défini pour retourner l’image horizontalement et verticalement. L’illustration suivante montre comment le rectangle est mosaïque par l’image. Notez que lorsque vous passez d’une vignette à l’autre dans une ligne donnée, l’image est retournée horizontalement et, lorsque vous passez d’une vignette à l’autre dans une colonne donnée, l’image est retournée verticalement.

A rectangle tiled with the image flipped horizontally and vertically.

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

Voir aussi