Ścieżki grafiki w GDI+

Ścieżki są tworzone przez łączenie linii, prostokątów i prostych krzywych. Jak pamiętasz z przeglądu grafiki wektorowej, następujące podstawowe bloki konstrukcyjne okazały się najbardziej przydatne do rysowania obrazów:

  • Wiersze

  • Prostokąty

  • Elipsy

  • Łuki

  • Wielokątów

  • Linie kardynaalne

  • Bézier szprychy

W GDI+ GraphicsPath obiekt umożliwia zebranie sekwencji tych bloków konstrukcyjnych w jednej jednostce. Cała sekwencja linii, prostokątów, wielokątów i krzywych można następnie narysować za pomocą jednego wywołania DrawPath metody Graphics klasy. Poniższa ilustracja przedstawia ścieżkę utworzoną przez połączenie linii, łuku, krzywej Béziera i linii kardynanej.

Image of a single-line path, starting from a straight line and continuing into different shapes.

Używanie ścieżki

Klasa GraphicsPath udostępnia następujące metody tworzenia sekwencji elementów do rysowania: AddLine, , AddArcAddEllipseAddPolygonAddRectangleAddCurve (dla linii kardynaalnych) i .AddBezier Każda z tych metod jest przeciążona; oznacza to, że każda metoda obsługuje kilka różnych list parametrów. Na przykład jedna odmiana AddLine metody otrzymuje cztery liczby całkowite, a inna odmiana AddLine metody otrzymuje dwa Point obiekty.

Metody dodawania wierszy, prostokątów i krzywych Bézier do ścieżki mają metody towarzyszące w liczbie mnogiej, które dodają kilka elementów do ścieżki w jednym wywołaniu: AddLines, AddRectanglesi AddBeziers. AddCurve Ponadto metody i AddArc mają metody towarzyszące i AddClosedCurveAddPie, które dodają zamkniętą krzywą lub kołową do ścieżki.

Aby narysować ścieżkę, potrzebujesz Graphics obiektu, Pen obiektu i GraphicsPath obiektu. Obiekt Graphics udostępnia metodę DrawPath , a Pen obiekt przechowuje atrybuty, takie jak szerokość i kolor, linii użytej do renderowania ścieżki. Obiekt GraphicsPath przechowuje sekwencję linii i krzywych tworzących ścieżkę. Obiekt Pen i GraphicsPath obiekt są przekazywane jako argumenty do DrawPath metody . W poniższym przykładzie przedstawiono ścieżkę składającą się z linii, wielokropka i krzywej Béziera:

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)

Poniższa ilustracja przedstawia ścieżkę.

Image of a path displayed within a graph.

Oprócz dodawania linii, prostokątów i krzywych do ścieżki można dodawać ścieżki do ścieżki. Umożliwia to łączenie istniejących ścieżek w celu utworzenia dużych, złożonych ścieżek.

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

Istnieją dwa inne elementy, które można dodać do ścieżki: ciągi i ciasta. Ciasto jest częścią wnętrza wielokropka. Poniższy przykład tworzy ścieżkę na podstawie łuku, linii kardynanej, ciągu i kołu:

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

Poniższa ilustracja przedstawia ścieżkę. Należy pamiętać, że ścieżka nie musi być połączona; łuk, linia kardynaalna, ciąg i kołowe są oddzielone.

Paths

Zobacz też