GraphicsPath Class

Definition

Represents a series of connected lines and curves. This class cannot be inherited.

public ref class GraphicsPath sealed : MarshalByRefObject, ICloneable, IDisposable
public sealed class GraphicsPath : MarshalByRefObject, ICloneable, IDisposable
type GraphicsPath = class
    inherit MarshalByRefObject
    interface ICloneable
    interface IDisposable
Public NotInheritable Class GraphicsPath
Inherits MarshalByRefObject
Implements ICloneable, IDisposable
Inheritance
GraphicsPath
Implements

Remarks

Note

In .NET 6 and later versions, the System.Drawing.Common package, which includes this type, is only supported on Windows operating systems. Use of this type in cross-platform apps causes compile-time warnings and run-time exceptions. For more information, see System.Drawing.Common only supported on Windows.

Applications use paths to draw outlines of shapes, fill the interiors of shapes, and create clipping regions. The graphics engine maintains the coordinates of geometric shapes in a path in world coordinate space.

A path may be composed of any number of figures (subpaths). Each figure is either composed of a sequence of connected lines and curves or a geometric shape primitive. The starting point of a figure is the first point in the sequence of connected lines and curves. The ending point is the last point in the sequence. The starting and ending points of a geometric shape primitive are defined by the primitive specification.

A figure that consists of a sequence of connected lines and curves (whose starting and ending points may be coincident) is an open figure, unless it is closed explicitly. A figure can be closed explicitly, by using the CloseFigure method, which closes the current figure by connecting a line from the ending point to the starting point. A figure that consists of a geometric shape primitive is a closed figure.

For purposes of filling and clipping (for example, if a path is rendered using FillPath), all open figures are closed by adding a line from the figure's first point to its last point.

A new figure is implicitly started when a path is created or when a figure is closed. A new figure is explicitly created when the StartFigure method is called.

When a geometric shape primitive is added to a path, it adds a figure containing the geometric shape, and also implicitly starts a new figure. Consequently, there is always a current figure in a path. When lines and curves are added to a path, an implicit line is added as needed to connect the ending point of the current figure to the starting point of the new lines and curves to form a sequence of connected lines and curves.

A figure has a direction that describes how line and curve segments are traced between the starting point and the ending point. The direction is defined in the order that lines and curves are added to a figure, or is defined by the geometric shape primitive. The direction is used in determining the path interiors for clipping and fill.

Constructors

GraphicsPath()

Initializes a new instance of the GraphicsPath class with a FillMode value of Alternate.

GraphicsPath(FillMode)

Initializes a new instance of the GraphicsPath class with the specified FillMode enumeration.

GraphicsPath(Point[], Byte[])

Initializes a new instance of the GraphicsPath class with the specified PathPointType and Point arrays.

GraphicsPath(Point[], Byte[], FillMode)

Initializes a new instance of the GraphicsPath class with the specified PathPointType and Point arrays and with the specified FillMode enumeration element.

GraphicsPath(PointF[], Byte[])

Initializes a new instance of the GraphicsPath array with the specified PathPointType and PointF arrays.

GraphicsPath(PointF[], Byte[], FillMode)

Initializes a new instance of the GraphicsPath array with the specified PathPointType and PointF arrays and with the specified FillMode enumeration element.

GraphicsPath(ReadOnlySpan<Point>, ReadOnlySpan<Byte>, FillMode)
GraphicsPath(ReadOnlySpan<PointF>, ReadOnlySpan<Byte>, FillMode)

Properties

FillMode

Gets or sets a FillMode enumeration that determines how the interiors of shapes in this GraphicsPath are filled.

PathData

Gets a PathData that encapsulates arrays of points (points) and types (types) for this GraphicsPath.

PathPoints

Gets the points in the path.

PathTypes

Gets the types of the corresponding points in the PathPoints array.

PointCount

Gets the number of elements in the PathPoints or the PathTypes array.

Methods

AddArc(Int32, Int32, Int32, Int32, Single, Single)

Appends an elliptical arc to the current figure.

AddArc(Rectangle, Single, Single)

Appends an elliptical arc to the current figure.

AddArc(RectangleF, Single, Single)

Appends an elliptical arc to the current figure.

AddArc(Single, Single, Single, Single, Single, Single)

Appends an elliptical arc to the current figure.

AddBezier(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32)

Adds a cubic Bézier curve to the current figure.

AddBezier(Point, Point, Point, Point)

Adds a cubic Bézier curve to the current figure.

AddBezier(PointF, PointF, PointF, PointF)

Adds a cubic Bézier curve to the current figure.

AddBezier(Single, Single, Single, Single, Single, Single, Single, Single)

Adds a cubic Bézier curve to the current figure.

AddBeziers(Point[])

Adds a sequence of connected cubic Bézier curves to the current figure.

AddBeziers(PointF[])

Adds a sequence of connected cubic Bézier curves to the current figure.

AddBeziers(ReadOnlySpan<Point>)
AddBeziers(ReadOnlySpan<PointF>)
AddClosedCurve(Point[])

Adds a closed curve to this path. A cardinal spline curve is used because the curve travels through each of the points in the array.

AddClosedCurve(Point[], Single)

Adds a closed curve to this path. A cardinal spline curve is used because the curve travels through each of the points in the array.

AddClosedCurve(PointF[])

Adds a closed curve to this path. A cardinal spline curve is used because the curve travels through each of the points in the array.

AddClosedCurve(PointF[], Single)

Adds a closed curve to this path. A cardinal spline curve is used because the curve travels through each of the points in the array.

AddClosedCurve(ReadOnlySpan<Point>)
AddClosedCurve(ReadOnlySpan<Point>, Single)
AddClosedCurve(ReadOnlySpan<PointF>)
AddClosedCurve(ReadOnlySpan<PointF>, Single)
AddCurve(Point[])

Adds a spline curve to the current figure. A cardinal spline curve is used because the curve travels through each of the points in the array.

AddCurve(Point[], Int32, Int32, Single)

Adds a spline curve to the current figure.

AddCurve(Point[], Single)

Adds a spline curve to the current figure.

AddCurve(PointF[])

Adds a spline curve to the current figure. A cardinal spline curve is used because the curve travels through each of the points in the array.

AddCurve(PointF[], Int32, Int32, Single)

Adds a spline curve to the current figure.

AddCurve(PointF[], Single)

Adds a spline curve to the current figure.

AddCurve(ReadOnlySpan<Point>)
AddCurve(ReadOnlySpan<Point>, Single)
AddCurve(ReadOnlySpan<PointF>)
AddCurve(ReadOnlySpan<PointF>, Single)
AddEllipse(Int32, Int32, Int32, Int32)

Adds an ellipse to the current path.

AddEllipse(Rectangle)

Adds an ellipse to the current path.

AddEllipse(RectangleF)

Adds an ellipse to the current path.

AddEllipse(Single, Single, Single, Single)

Adds an ellipse to the current path.

AddLine(Int32, Int32, Int32, Int32)

Appends a line segment to the current figure.

AddLine(Point, Point)

Appends a line segment to this GraphicsPath.

AddLine(PointF, PointF)

Appends a line segment to this GraphicsPath.

AddLine(Single, Single, Single, Single)

Appends a line segment to this GraphicsPath.

AddLines(Point[])

Appends a series of connected line segments to the end of this GraphicsPath.

AddLines(PointF[])

Appends a series of connected line segments to the end of this GraphicsPath.

AddLines(ReadOnlySpan<Point>)
AddLines(ReadOnlySpan<PointF>)
AddPath(GraphicsPath, Boolean)

Appends the specified GraphicsPath to this path.

AddPie(Int32, Int32, Int32, Int32, Single, Single)

Adds the outline of a pie shape to this path.

AddPie(Rectangle, Single, Single)

Adds the outline of a pie shape to this path.

AddPie(Single, Single, Single, Single, Single, Single)

Adds the outline of a pie shape to this path.

AddPolygon(Point[])

Adds a polygon to this path.

AddPolygon(PointF[])

Adds a polygon to this path.

AddPolygon(ReadOnlySpan<Point>)
AddPolygon(ReadOnlySpan<PointF>)
AddRectangle(Rectangle)

Adds a rectangle to this path.

AddRectangle(RectangleF)

Adds a rectangle to this path.

AddRectangles(ReadOnlySpan<Rectangle>)
AddRectangles(ReadOnlySpan<RectangleF>)
AddRectangles(Rectangle[])

Adds a series of rectangles to this path.

AddRectangles(RectangleF[])

Adds a series of rectangles to this path.

AddRoundedRectangle(Rectangle, Size)
AddRoundedRectangle(RectangleF, SizeF)
AddString(String, FontFamily, Int32, Single, Point, StringFormat)

Adds a text string to this path.

AddString(String, FontFamily, Int32, Single, PointF, StringFormat)

Adds a text string to this path.

AddString(String, FontFamily, Int32, Single, Rectangle, StringFormat)

Adds a text string to this path.

AddString(String, FontFamily, Int32, Single, RectangleF, StringFormat)

Adds a text string to this path.

ClearMarkers()

Clears all markers from this path.

Clone()

Creates an exact copy of this path.

CloseAllFigures()

Closes all open figures in this path and starts a new figure. It closes each open figure by connecting a line from its endpoint to its starting point.

CloseFigure()

Closes the current figure and starts a new figure. If the current figure contains a sequence of connected lines and curves, the method closes the loop by connecting a line from the endpoint to the starting point.

CreateObjRef(Type)

Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose()

Releases all resources used by this GraphicsPath.

Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize()

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.

Flatten()

Converts each curve in this path into a sequence of connected line segments.

Flatten(Matrix)

Applies the specified transform and then converts each curve in this GraphicsPath into a sequence of connected line segments.

Flatten(Matrix, Single)

Converts each curve in this GraphicsPath into a sequence of connected line segments.

GetBounds()

Returns a rectangle that bounds this GraphicsPath.

GetBounds(Matrix)

Returns a rectangle that bounds this GraphicsPath when this path is transformed by the specified Matrix.

GetBounds(Matrix, Pen)

Returns a rectangle that bounds this GraphicsPath when the current path is transformed by the specified Matrix and drawn with the specified Pen.

GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetLastPoint()

Gets the last point in the PathPoints array of this GraphicsPath.

GetLifetimeService()
Obsolete.

Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetPathPoints(Span<PointF>)
GetPathTypes(Span<Byte>)
GetType()

Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService()
Obsolete.

Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
IsOutlineVisible(Int32, Int32, Pen)

Indicates whether the specified point is contained within (under) the outline of this GraphicsPath when drawn with the specified Pen.

IsOutlineVisible(Int32, Int32, Pen, Graphics)

Indicates whether the specified point is contained within (under) the outline of this GraphicsPath when drawn with the specified Pen and using the specified Graphics.

IsOutlineVisible(Point, Pen)

Indicates whether the specified point is contained within (under) the outline of this GraphicsPath when drawn with the specified Pen.

IsOutlineVisible(Point, Pen, Graphics)

Indicates whether the specified point is contained within (under) the outline of this GraphicsPath when drawn with the specified Pen and using the specified Graphics.

IsOutlineVisible(PointF, Pen)

Indicates whether the specified point is contained within (under) the outline of this GraphicsPath when drawn with the specified Pen.

IsOutlineVisible(PointF, Pen, Graphics)

Indicates whether the specified point is contained within (under) the outline of this GraphicsPath when drawn with the specified Pen and using the specified Graphics.

IsOutlineVisible(Single, Single, Pen)

Indicates whether the specified point is contained within (under) the outline of this GraphicsPath when drawn with the specified Pen.

IsOutlineVisible(Single, Single, Pen, Graphics)

Indicates whether the specified point is contained within (under) the outline of this GraphicsPath when drawn with the specified Pen and using the specified Graphics.

IsVisible(Int32, Int32)

Indicates whether the specified point is contained within this GraphicsPath.

IsVisible(Int32, Int32, Graphics)

Indicates whether the specified point is contained within this GraphicsPath, using the specified Graphics.

IsVisible(Point)

Indicates whether the specified point is contained within this GraphicsPath.

IsVisible(Point, Graphics)

Indicates whether the specified point is contained within this GraphicsPath.

IsVisible(PointF)

Indicates whether the specified point is contained within this GraphicsPath.

IsVisible(PointF, Graphics)

Indicates whether the specified point is contained within this GraphicsPath.

IsVisible(Single, Single)

Indicates whether the specified point is contained within this GraphicsPath.

IsVisible(Single, Single, Graphics)

Indicates whether the specified point is contained within this GraphicsPath in the visible clip region of the specified Graphics.

MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean)

Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
Reset()

Empties the PathPoints and PathTypes arrays and sets the FillMode to Alternate.

Reverse()

Reverses the order of points in the PathPoints array of this GraphicsPath.

SetMarkers()

Sets a marker on this GraphicsPath.

StartFigure()

Starts a new figure without closing the current figure. All subsequent points added to the path are added to this new figure.

ToString()

Returns a string that represents the current object.

(Inherited from Object)
Transform(Matrix)

Applies a transform matrix to this GraphicsPath.

Warp(PointF[], RectangleF)

Applies a warp transform, defined by a rectangle and a parallelogram, to this GraphicsPath.

Warp(PointF[], RectangleF, Matrix)

Applies a warp transform, defined by a rectangle and a parallelogram, to this GraphicsPath.

Warp(PointF[], RectangleF, Matrix, WarpMode)

Applies a warp transform, defined by a rectangle and a parallelogram, to this GraphicsPath.

Warp(PointF[], RectangleF, Matrix, WarpMode, Single)

Applies a warp transform, defined by a rectangle and a parallelogram, to this GraphicsPath.

Warp(ReadOnlySpan<PointF>, RectangleF, Matrix, WarpMode, Single)
Widen(Pen)

Adds an additional outline to the path.

Widen(Pen, Matrix)

Adds an additional outline to the GraphicsPath.

Widen(Pen, Matrix, Single)

Replaces this GraphicsPath with curves that enclose the area that is filled when this path is drawn by the specified pen.

Applies to

See also