Sdílet prostřednictvím


Otevřené a uzavřené křivky v GDI+

Následující obrázek znázorňuje dvě křivky: jednu otevřenou a jednu uzavřenou.

snímek obrazovky s jednou otevřenou křivkou a jednou uzavřenou křivkou

Spravované rozhraní pro křivky

Uzavřené křivky mají vnitřní prostor, a proto mohou být naplněny kartáčem. Třída Graphics v GDI+ poskytuje následující metody pro vyplnění uzavřených obrazců a křivek: FillRectangle, FillEllipse, FillPie, FillPolygon, FillClosedCurve, FillPatha FillRegion. Kdykoli zavoláte jednu z těchto metod, musíte předat jeden z konkrétních typů štětců (SolidBrush, HatchBrush, TextureBrush, LinearGradientBrushnebo PathGradientBrush) jako argument.

Metoda FillPie je doprovodnou metodou DrawArc. Stejně jako metoda DrawArc nakreslí část obrysu elipsy, metoda FillPie vyplní část vnitřní oblasti elipsy. Následující příklad nakreslí oblouk a vyplní odpovídající část interiéru elipsy:

myGraphics.FillPie(mySolidBrush, 0, 0, 140, 70, 0, 120);
myGraphics.DrawArc(myPen, 0, 0, 140, 70, 0, 120);
myGraphics.FillPie(mySolidBrush, 0, 0, 140, 70, 0, 120)
myGraphics.DrawArc(myPen, 0, 0, 140, 70, 0, 120)

Následující obrázek znázorňuje oblouk a vyplněný sektor.

Snímek obrazovky s obloukem a vyplněným grafem ve tvaru koláče

Metoda FillClosedCurve je doprovodnou metodou DrawClosedCurve. Obě metody automaticky zavírají křivku propojením koncového bodu s výchozím bodem. Následující příklad nakreslí křivku, která prochází (0, 0), (60, 20) a (40, 50). Pak se křivka automaticky uzavře připojením (40, 50) k počátečnímu bodu (0, 0) a vnitřní oblast se vyplní plnou barvou.

Point[] myPointArray =
{
    new Point(0, 0),
    new Point(60, 20),
    new Point(40, 50)
};
myGraphics.DrawClosedCurve(myPen, myPointArray);
myGraphics.FillClosedCurve(mySolidBrush, myPointArray);
Dim myPointArray As Point() = _
   {New Point(0, 0), New Point(60, 20), New Point(40, 50)}
myGraphics.DrawClosedCurve(myPen, myPointArray)
myGraphics.FillClosedCurve(mySolidBrush, myPointArray)

Metoda FillPath vyplňuje interiéry jednotlivých úseků cesty. Pokud část cesty neformuje uzavřenou křivku nebo obrazec, metoda FillPath ji před vyplněním automaticky zavře. Následující příklad nakreslí a vyplní cestu, která se skládá z oblouku, kardinální spline, řetězce a výseče.

SolidBrush mySolidBrush = new SolidBrush(Color.Aqua);
GraphicsPath myGraphicsPath = new GraphicsPath();

Point[] myPointArray =
{
    new Point(15, 20),
    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.AddCurve(myPointArray);
myGraphicsPath.AddString("a string in a path", myFontFamily,
   0, 24, myPointF, myStringFormat);
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);

myGraphics.FillPath(mySolidBrush, myGraphicsPath);
myGraphics.DrawPath(myPen, myGraphicsPath);
Dim mySolidBrush As New SolidBrush(Color.Aqua)
Dim myGraphicsPath As New GraphicsPath()

Dim myPointArray As Point() = { _
   New Point(15, 20), _
   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.AddCurve(myPointArray)
myGraphicsPath.AddString("a string in a path", myFontFamily, _
   0, 24, myPointF, myStringFormat)
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110)

myGraphics.FillPath(mySolidBrush, myGraphicsPath)
myGraphics.DrawPath(myPen, myGraphicsPath)

Následující obrázek znázorňuje cestu s plnou výplní a bez výplně. Všimněte si, že text v řetězci je obrys, ale není vyplněn metodou DrawPath. Je to FillPath metoda, která maluje interiéry znaků v řetězci.

Řetězec v cestě

Viz také