Export (0) Print
Expand All

GraphicsPathIterator.HasCurve Method

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 PaintEventArgs e, 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.AddLines(myPoints);
    myPath.AddRectangle(myRect);
    myPath.AddEllipse(220, 220, 100, 100);

    // Create a GraphicsPathIterator for myPath.
    GraphicsPathIterator myPathIterator = new
        GraphicsPathIterator(myPath);

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

    // Show the test result.
    MessageBox.Show(myHasCurve.ToString());
}

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft