Sdílet prostřednictvím


Cesty grafiky v GDI+

Cesty jsou tvořeny kombinováním čar, obdélníků a jednoduchých křivek. Vzpomeňte si z přehledu vektorové grafiky, že následující základní stavební bloky jsou pro kreslení obrázků nejužitečnější:

  • Řádky

  • Obdélníky

  • Elipsy

  • Oblouky

  • Mnohoúhelníky

  • Kardinaly

  • Bézierovy křivky

V GDI+ GraphicsPath objekt umožňuje shromáždit posloupnost těchto stavebních bloků do jedné jednotky. Celá posloupnost čar, obdélníků, mnohoúhelníků a křivek lze pak kreslit jedním voláním DrawPath metody Graphics třídy. Následující obrázek znázorňuje cestu vytvořenou kombinací čáry, oblouku, křivky Bézier a kardinality spline.

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

Použití cesty

Třída GraphicsPath poskytuje následující metody pro vytvoření posloupnosti položek, které mají být nakresleny: AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon, AddCurve (pro kardinality spline) a AddBezier. Každá z těchto metod je přetížena; to znamená, že každá metoda podporuje několik různých seznamů parametrů. Například jedna varianta AddLine metody přijímá čtyři celá čísla a jiná varianta AddLine metody přijímá dva Point objekty.

Metody pro přidání čar, obdélníků a bézierových čar do cesty mají doprovodné metody v množném čísle, které do cesty přidají několik položek v jednom volání: AddLines, AddRectanglesa AddBeziers. AddCurveAddArc Tyto metody mají také doprovodné metody AddClosedCurve a AddPie, které přidávají uzavřenou křivku nebo výseč k cestě.

Pokud chcete nakreslit cestu, potřebujete Graphics objekt, Pen objekt a GraphicsPath objekt. Objekt Graphics poskytuje metodu DrawPath a Pen objekt ukládá atributy, jako je šířka a barva, čáry použité k vykreslení cesty. Objekt GraphicsPath ukládá posloupnost čar a křivek, které tvoří cestu. Objekt Pen a GraphicsPath objekt jsou předány jako argumenty metodě DrawPath . Následující příklad nakreslí cestu, která se skládá z čáry, tři tečky a Bézier spline:

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)

Následující obrázek znázorňuje cestu.

Image of a path displayed within a graph.

Kromě přidání čar, obdélníků a křivek do cesty můžete přidat cesty k cestě. Díky tomu můžete zkombinovat existující cesty a vytvořit tak velké a složité cesty.

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

Do cesty můžete přidat dvě další položky: řetězce a výsečové. Výseč je část interiéru tří teček. Následující příklad vytvoří cestu z oblouku, kardinality, řetězce a výsečového grafu:

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)

Následující obrázek znázorňuje cestu. Všimněte si, že cesta nemusí být připojena; oblouk, kardinalita spline, řetězec a výseč jsou oddělené.

Paths

Viz také