Partager via


Tracés graphiques dans GDI+

Les tracés sont formés de combinaisons de lignes, de rectangles et de courbes simples. Dans la rubrique Vue d'ensemble des graphismes vectoriels, nous avons vu que les blocs de construction de base suivants étaient les plus utiles pour dessiner des images :

  • Lignes

  • Rectangles

  • Ellipses

  • Arcs

  • Polygones

  • Splines cardinales

  • Splines de Bézier

Dans GDI+, l'objet GraphicsPath permet de réunir dans une entité unique une séquence de tels blocs. La séquence entière de lignes, rectangles, polygones et courbes peut ensuite être dessinée à l'aide d'un seul appel à la méthode DrawPath de la classe Graphics. L'illustration suivante représente un tracé créé en combinant une ligne, un arc, une spline de Bézier et une spline cardinale.

Chemin d'accès

Utilisation d'un tracé

La classe GraphicsPath fournit les méthodes suivantes pour créer une séquence d'éléments à dessiner : AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon, AddCurve (pour les splines cardinales) et AddBezier. Chacune de ces méthodes est surchargée, c'est-à-dire qu'elle prend en charge plusieurs listes de paramètres différentes. Par exemple, une variante de la méthode AddLine reçoit quatre entiers, tandis qu'une autre variante de la méthode AddLine reçoit deux objets Point.

Les méthodes permettant d'ajouter des lignes, des rectangles et des splines de Bézier à un tracé sont associées à des méthodes au pluriel qui ajoutent plusieurs éléments au tracé en un seul appel : AddLines, AddRectangles et AddBeziers. Par ailleurs, les méthodes AddCurve et AddArc sont également associées à d'autres méthodes, à savoir AddClosedCurve et AddPie, qui ajoutent une courbe fermée ou un secteur au tracé.

Pour dessiner un tracé, il vous faut un objet Graphics, un objet Pen et un objet GraphicsPath. L'objet Graphics fournit la méthode DrawPath et l'objet Pen stocke des attributs (largeur et couleur notamment) de la ligne utilisée pour représenter le tracé. L'objet GraphicsPath stocke la séquence de lignes et de courbes qui constitue le tracé. L'objet Pen et l'objet GraphicsPath sont passés en tant qu'arguments à la méthode DrawPath. L'exemple suivant dessine un tracé constitué d'une ligne, d'une ellipse et d'une spline de Bézier :

        myGraphicsPath.AddLine(0, 0, 30, 20)
        myGraphicsPath.AddEllipse(20, 20, 20, 40)
        myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10)
        myGraphics.DrawPath(myPen, myGraphicsPath)

myGraphicsPath.AddLine(0, 0, 30, 20);
myGraphicsPath.AddEllipse(20, 20, 20, 40);
myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10);
myGraphics.DrawPath(myPen, myGraphicsPath);

L'illustration suivante représente ce tracé.

Chemin d'accès

Outre des lignes, des rectangles et des courbes, vous pouvez ajouter d'autres tracés à un tracé. Vous pouvez ainsi combiner des tracés existants pour former des tracés plus complexes et de plus grande taille.

        myGraphicsPath.AddPath(graphicsPath1, False)
        myGraphicsPath.AddPath(graphicsPath2, False)

myGraphicsPath.AddPath(graphicsPath1, false);
myGraphicsPath.AddPath(graphicsPath2, false);

Vous pouvez ajouter deux autres éléments à un tracé : des chaînes et des secteurs. Un secteur est une portion de l'intérieur d'une ellipse. L'exemple suivant crée un tracé constitué d'un arc, d'une spline cardinale et d'un secteur.

        Dim myGraphicsPath As New GraphicsPath()

        Dim myPointArray As Point() = { _
           New Point(5, 30), _
           New Point(20, 40), _
           New Point(50, 30)}

        Dim myFontFamily As New FontFamily("Times New Roman")
        Dim myPointF As New PointF(50, 20)
        Dim myStringFormat As New StringFormat()

        myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180)
        myGraphicsPath.StartFigure()
        myGraphicsPath.AddCurve(myPointArray)
        myGraphicsPath.AddString("a string in a path", myFontFamily, _
           0, 24, myPointF, myStringFormat)
        myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110)
        myGraphics.DrawPath(myPen, myGraphicsPath)

     GraphicsPath myGraphicsPath = new GraphicsPath();

     Point[] myPointArray = {
new Point(5, 30), 
new Point(20, 40), 
new Point(50, 30)};

     FontFamily myFontFamily = new FontFamily("Times New Roman");
     PointF myPointF = new PointF(50, 20);
     StringFormat myStringFormat = new StringFormat();

     myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180);
     myGraphicsPath.StartFigure();
     myGraphicsPath.AddCurve(myPointArray);
     myGraphicsPath.AddString("a string in a path", myFontFamily,
        0, 24, myPointF, myStringFormat);
     myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);
     myGraphics.DrawPath(myPen, myGraphicsPath);

L'illustration suivante représente ce tracé. Notez qu'un tracé n'est pas obligatoirement constitué d'éléments liés ; l'arc, la spline cardinale, la chaîne et le secteur sont séparés.

Tracés

Voir aussi

Tâches

Comment : créer des objets graphiques pour le dessin

Référence

System.Drawing.Drawing2D.GraphicsPath

System.Drawing.Point

Autres ressources

Lignes, courbes et formes

Génération et dessin de tracés