GraphicsPathIterator.HasCurve Method ()


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Indicates whether the path associated with this GraphicsPathIterator contains a curve.

Namespace:   System.Drawing.Drawing2D
Assembly:  System.Drawing (in System.Drawing.dll)

public bool HasCurve()

Return Value

Type: System.Boolean

This method returns true if the current subpath contains a curve; otherwise, false.

All curves in a path are stored as sequences of Bézier splines. For example, when you add an ellipse to a path, you specify the upper-left corner, the width, and the height of the ellipse's bounding rectangle. Those numbers (upper-left corner, width, and height) are not stored in the path; instead; the ellipse is converted to a sequence of four Bézier splines. The path stores the endpoints and control points of those Bézier splines.

A path stores an array of data points, each of which belongs to a line or a Bézier spline. If some of the points in the array belong to Bézier splines, then HasCurve returns true. If all points in the array belong to lines, then HasCurve returns false.

Certain methods flatten a path, which means that all the curves in the path are converted to sequences of lines. After a path has been flattened, HasCurve will always return false. Calling the Flatten, Widen, or Warp method of the GraphicsPath class will flatten a path.

The following example is designed for use with Windows Forms, and it requires PaintEventArgse, an OnPaint event object. The code performs the following actions:

  • Creates a GraphicsPath object, myPath.

  • Adds three lines, a rectangle, and an ellipse.

  • Creates a GraphicsPathIterator object for myPath.

  • Tests to see if the current path myPath contains a curve.

  • Shows the result of the test in a message box.

private void HasCurveExample(PaintEventArgs e)

    // Create a path and add three lines,
    // a rectangle and an ellipse.
    GraphicsPath myPath = new GraphicsPath();

    Point[] myPoints = {new Point(20, 20), new Point(120, 120), 
        new Point(20, 120),new Point(20, 20) }; 

    Rectangle myRect = new Rectangle(120, 120, 100, 100);
    myPath.AddEllipse(220, 220, 100, 100);

    // Create a GraphicsPathIterator for myPath.
    GraphicsPathIterator myPathIterator = new

    // Test for a curve.
    bool myHasCurve = myPathIterator.HasCurve();

    // Show the test result.

.NET Framework
Available since 1.1
Return to top