Export (0) Print
Expand All

GraphicsPathIterator.NextSubpath Method (GraphicsPath, Boolean)

Gets the next figure (subpath) from the associated path of this GraphicsPathIterator.

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

public int NextSubpath(
	GraphicsPath path,
	out bool isClosed
)

Parameters

path
Type: System.Drawing.Drawing2D.GraphicsPath

A GraphicsPath that is to have its data points set to match the data points of the retrieved figure (subpath) for this iterator.

isClosed
Type: System.Boolean

[out] Indicates whether the current subpath is closed. It is true if the if the figure is closed, otherwise it is false.

Return Value

Type: System.Int32
The number of data points in the retrieved figure (subpath). If there are no more figures to retrieve, zero is returned.

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.

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

  • Lists the values of all the path's points to the left side of the screen.

  • Creates a GraphicsPathIterator object.

  • Creates a GraphicsPath object, myPathSection, to receive copied points.

  • Calls the NextSubpath method, which iterates to the third subpath (figure) and copies all the points contained in that subpath to the myPathSection path, and also returns the number of points copied to subpathPoints.

  • Lists the subpath number and number of points it contains to the right side of the screen.

public void NextSubpathExample2(PaintEventArgs e)
{

    // Create a graphics path.
    GraphicsPath myPath = new GraphicsPath();

    // Set up primitives to add to myPath.
    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);

    // Add 3 lines, a rectangle, an ellipse, and 2 markers.
    myPath.AddLines(myPoints);
    myPath.SetMarkers();
    myPath.AddRectangle(myRect);
    myPath.SetMarkers();
    myPath.AddEllipse(220, 220, 100, 100);

    // Get the total number of points for the path, 

    // and the arrays of the points and types. 
    int myPathPointCount = myPath.PointCount;
    PointF[] myPathPoints = myPath.PathPoints;
    byte[] myPathTypes = myPath.PathTypes;

    // Set up variables for listing all of the path's 

    // points to the screen. 
    int i;
    float j = 20;
    Font myFont = new Font("Arial", 8);
    SolidBrush myBrush = new SolidBrush(Color.Black);

    // List the values of all the path points and types to the screen. 
    for(i=0; i<myPathPointCount; i++)
    {
        e.Graphics.DrawString(myPathPoints[i].X.ToString()+
            ", " + myPathPoints[i].Y.ToString() + ", " +
            myPathTypes[i].ToString(),
            myFont,
            myBrush,
            20,
            j);
        j+=20;
    }

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

    // Rewind the iterator.
    myPathIterator.Rewind();

    // Create the GraphicsPath section.
    GraphicsPath myPathSection = new GraphicsPath();

    // Iterate to the 3rd subpath and list the number of points therein 

    // to the screen. 
    int subpathPoints;
    bool IsClosed2;

    // Iterate to the third subpath.
    subpathPoints = myPathIterator.NextSubpath(
        myPathSection, out IsClosed2);
    subpathPoints = myPathIterator.NextSubpath(
        myPathSection, out IsClosed2);
    subpathPoints = myPathIterator.NextSubpath(
        myPathSection, out IsClosed2);

    // Write the number of subpath points to the screen.
    e.Graphics.DrawString("Subpath: 3"  +
        "   Num Points: " +
        subpathPoints.ToString(),
        myFont,
        myBrush,
        200,
        20);
}

.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