Condividi tramite


Percorsi di oggetti Graphics in GDI+

Aggiornamento: novembre 2007

I percorsi sono costituiti da combinazioni di linee, rettangoli e curve semplici. Come indicato in Cenni preliminari sulla grafica vettoriale, i seguenti elementi si sono rivelati i più efficienti per il disegno di immagini:

  • Linee

  • Rettangoli

  • Ellissi

  • Archi

  • Poligoni

  • Spline di tipo Cardinal

  • Spline di Bézier

In GDI+ l'oggetto GraphicsPath consente di riunire in una singola unità una sequenza di tali blocchi di creazione. È quindi possibile tracciare l'intera sequenza di linee, rettangoli, poligoni e curve tramite una chiamata al metodo DrawPath della classe Graphics. Nell'immagine seguente viene mostrato un percorso creato tramite una combinazione di una linea, un arco, una spline Bézier e una spline di tipo Cardinal.

Percorso

Utilizzo di un percorso

Nella classe GraphicsPath sono disponibili i seguenti metodi per la creazione di una sequenza di elementi da tracciare: AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon, AddCurve (per le spline di tipo Cardinal) e AddBezier. Tutti questi metodi sono sottoposti a overload, ovvero ogni metodo supporta svariati elenchi di parametri diversi. Una variazione del metodo AddLine ad esempio riceve quattro valori integer e un'altra variazione del metodo AddLine riceve due oggetti Point.

Ai metodi per l'aggiunta di linee, rettangoli e spline Bézier a un percorso sono associati più metodi correlati che consentono di aggiungere al percorso più elementi in un'unica chiamata: AddLines, AddRectangles e AddBeziers. Anche ai metodi AddCurve e AddArc sono associati metodi correlati, AddClosedCurve e AddPie, che consentono di aggiungere una curva chiusa a una torta al percorso.

Per tracciare un percorso, sono necessari un oggetto Graphics, un oggetto Pen e un oggetto GraphicsPath. L'oggetto Graphics fornisce il metodo DrawPath, mentre nell'oggetto Pen sono memorizzati gli attributi, quale il colore e lo spessore, della linea utilizzata per eseguire il rendering del percorso. Nell'oggetto GraphicsPath viene memorizzata la sequenza di linee e curve che costituisce il percorso. Gli oggetti Pen e GraphicsPath vengono passati come argomenti al metodo DrawPath. L'esempio seguente consente di tracciare un percorso costituito da una linea, un'ellisse e una spline 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);

Nell'immagine seguente viene mostrato il percorso.

Percorso

Oltre ad aggiungere linee, rettangoli e curve a un percorso, è possibile aggiungere percorsi a un percorso, in modo da combinare percorsi esistenti per creare percorsi lunghi e complessi.

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

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

A un percorso è inoltre possibile aggiungere altri due elementi: stringhe e torte. Una torta è una porzione dell'interno di un'ellisse. L'esempio seguente consente di creare un percorso utilizzando un arco, una spline di tipo Cardinal, una stringa e una torta.

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

Nell'immagine seguente viene mostrato il percorso. Si noti che non è necessario che un percorso sia collegato. L'arco, la spline di tipo Cardinal, la stringa e la torta sono separati.

Percorsi

Vedere anche

Attività

Procedura: creare oggetti Graphics per disegnare

Riferimenti

System.Drawing.Drawing2D.GraphicsPath

System.Drawing.Point

Altre risorse

Linee, curve e forme

Costruzione e creazione di percorsi