Comment : remplir une forme avec une image

Mise à jour : novembre 2007

À l'instar de carreaux d'un sol carrelé, des images rectangulaires peuvent être placées côte à côte pour remplir une forme (en mosaïque). Pour remplir avec une mosaïque l'intérieur d'une forme, utilisez une brosse texturée. Lorsque vous construisez un objet TextureBrush, l'un des arguments que vous passez au constructeur est un objet Image. Lorsque vous utilisez la brosse texturée pour peindre l'intérieur d'une forme, la forme est remplie par des copies répétées de cette image.

La propriété WrapMode (mode habillage) de l'objet TextureBrush détermine l'orientation de l'image lors de sa répétition dans une grille rectangulaire. Toutes les images de la mosaïque dans la grille peuvent avoir la même orientation, ou vous pouvez prévoir une rotation d'une position d'image à la suivante. La rotation peut être horizontale, verticale ou les deux. Les exemples suivants illustrent une mosaïque avec différents types de rotation.

Pour disposer une image en mosaïque

  • Cet exemple utilise l'image 75×75 suivante pour disposer un rectangle 200×200 en mosaïque.

Mosaïque 1

  • L'illustration suivante montre comment la mosaïque de l'image remplit le rectangle. Notez que toutes les images de la mosaïque ont la même orientation, sans rotation.

Mosaïque 2

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

Pour faire pivoter une image horizontalement lors de la disposition en mosaïque

  • Cet exemple utilise la même image 75×75 pour remplir un rectangle 200×200. Le mode habillage prévoit une rotation horizontale de l'image. L'illustration suivante montre comment la mosaïque de l'image remplit le rectangle. Notez que, lors du passage d'une image à la suivante dans une ligne donnée, l'image effectue une rotation horizontale.

Mosaïque 3

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

Pour faire pivoter une image verticalement lors de la disposition en mosaïque

  • Cet exemple utilise la même image 75×75 pour remplir un rectangle 200×200. Le mode habillage prévoit une rotation verticale de l'image.

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

Pour faire pivoter une image horizontalement et verticalement lors de la disposition en mosaïque

  • Cet exemple utilise la même image 75×75 pour disposer un rectangle 200×200 en mosaïque. Le mode habillage prévoit des rotations horizontale et verticale de l'image. L'illustration suivante montre comment la mosaïque de l'image remplit le rectangle. Notez que, lors du passage d'une image à la suivante dans une ligne donnée, l'image effectue une rotation horizontale, et lorsque vous passez d'une image à la suivante dans une colonne donnée, l'image effectue une rotation verticale.

Mosaïque 5

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

Voir aussi

Autres ressources

Utilisation d'un pinceau pour remplir des formes