Udostępnij za pośrednictwem


Ścieżki graficzne w GDI+

Ścieżki są tworzone przez łączenie linii, prostokątów i prostych krzywych. Przypomnij sobie z Vector Graphics Overview, że następujące podstawowe bloki konstrukcyjne okazały się najbardziej przydatne do rysowania obrazów:

  • Linie

  • Prostokąty

  • Elipsy

  • Łuki

  • Wielokąty

  • Splajny kardynalne

  • Krzywe Béziera

W GDI+obiekt GraphicsPath 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 metody DrawPath klasy Graphics. Poniższa ilustracja przedstawia ścieżkę utworzoną przez połączenie linii, łuku, krzywej Béziera i linii kardynanej.

Obraz ścieżki jednowierszowej, zaczynającej się od linii prostej i przechodzącej w różne kształty.

Używanie ścieżki

Klasa GraphicsPath udostępnia następujące metody tworzenia sekwencji elementów do rysowania: AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon, AddCurve (w przypadku 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 metody AddLine otrzymuje cztery liczby całkowite, a inna odmiana metody AddLine odbiera dwa obiekty Point.

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. Ponadto metody AddCurve i AddArc mają metody towarzyszące, AddClosedCurve i AddPie, które dodają zamkniętą krzywą lub wykres kołowy do ścieżki.

Aby narysować ścieżkę, potrzebujesz obiektu Graphics, obiektu Pen i obiektu GraphicsPath. Obiekt Graphics udostępnia metodę DrawPath, a obiekt Pen przechowuje atrybuty, takie jak szerokość i kolor, linii używanej do renderowania ścieżki. Obiekt GraphicsPath przechowuje sekwencję linii i krzywych tworzących ścieżkę. Obiekt Pen i obiekt GraphicsPath są przekazywane jako argumenty do metody DrawPath. 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ę.

Obraz ścieżki wyświetlanej na grafie.

Oprócz dodawania linii, prostokątów i krzywych do ścieżki można dodawać do niej inne ś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: łańcuchy znaków i wykresy kołowe. Wycinek jest częścią wnętrza elipsy. 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, splajn kardynalny, string i wycinek kołowy są oddzielone.

ścieżek

Zobacz też