Création de figures à partir de lignes, de courbes et de formes
Pour créer un chemin d’accès, construisez un objet GraphicsPath , puis appelez des méthodes, telles que AddLine et AddCurve, pour ajouter des primitives au chemin.
L’exemple suivant crée un chemin qui a un seul arc. L’arc a un angle de balayage de –180 degrés, dans le sens inverse des aiguilles d’une montre dans le système de coordonnées par défaut.
Pen pen(Color(255, 255, 0, 0));
GraphicsPath path;
path.AddArc(175, 50, 50, 50, 0, -180);
graphics.DrawPath(&pen, &path);
L’exemple suivant crée un chemin qui comporte deux figures. La première figure est un arc suivi d’une ligne. La deuxième figure est une ligne suivie d’une courbe, suivie d’une ligne. La première figure est laissée ouverte et la deuxième figure est fermée.
Point points[] = {Point(40, 60), Point(50, 70), Point(30, 90)};
Pen pen(Color(255, 255, 0, 0), 2);
GraphicsPath path;
// The first figure is started automatically, so there is
// no need to call StartFigure here.
path.AddArc(175, 50, 50, 50, 0.0f, -180.0f);
path.AddLine(100, 0, 250, 20);
path.StartFigure();
path.AddLine(50, 20, 5, 90);
path.AddCurve(points, 3);
path.AddLine(50, 150, 150, 180);
path.CloseFigure();
graphics.DrawPath(&pen, &path);
En plus d’ajouter des lignes et des courbes aux chemins, vous pouvez ajouter des formes fermées : rectangles, ellipses, secteurs et polygones. L’exemple suivant crée un chemin qui a deux lignes, un rectangle et une ellipse. Le code utilise un stylet pour dessiner le chemin et un pinceau pour remplir le chemin.
GraphicsPath path;
Pen pen(Color(255, 255, 0, 0), 2);
SolidBrush brush(Color(255, 0, 0, 200));
path.AddLine(10, 10, 100, 40);
path.AddLine(100, 60, 30, 60);
path.AddRectangle(Rect(50, 35, 20, 40));
path.AddEllipse(10, 75, 40, 30);
graphics.DrawPath(&pen, &path);
graphics.FillPath(&brush, &path);
Le chemin d’accès de l’exemple précédent comporte trois figures. La première figure se compose des deux lignes, la deuxième figure se compose du rectangle et la troisième figure se compose de l’ellipse. Même en l’absence d’appels à GraphicsPath::CloseFigure ou GraphicsPath::StartFigure, les formes intrinsèquement fermées, telles que les rectangles et les ellipses, sont considérées comme des figures distinctes.