Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

PathGeometry Class

Represents a complex shape that may be composed of arcs, curves, ellipses, lines, and rectangles.

Namespace: System.Windows.Media
Assembly: PresentationCore (in presentationcore.dll)

public sealed class PathGeometry : Geometry
/** @attribute ContentPropertyAttribute("Figures") */ 
public final class PathGeometry extends Geometry
public final class PathGeometry extends Geometry

Each PathGeometry object defines a collection of PathFigure objects. Each of the PathFigure objects is composed of one or more PathSegment objects, such as ArcSegment and LineSegment, which actually define their shape.

The filled area of the PathGeometry is defined by taking all of the contained PathFigure objects that have their IsFilled property set to true and applying the FillRule to determine the enclosed area.

This example shows how to create a line segment. To create a line segment, use the PathGeometry, PathFigure, and LineSegment classes.

The following examples draw a LineSegment from (10, 50) to (200, 70). The following illustration shows the resulting LineSegment; a grid background was added to show the coordinate system.

A LineSegment drawn from (10,50) to (200,700)

A LineSegment in a PathFigure

In Extensible Application Markup Language (XAML), you may use attribute syntax to describe a path.

<Path Stroke="Black" StrokeThickness="1"  
  Data="M 10,50 L 200,70" />


In XAML, you may also draw a line segment by using object element syntax. The following is equivalent to the previous XAML example.

PathFigure myPathFigure = new PathFigure();
myPathFigure.StartPoint = new Point(10, 50);

LineSegment myLineSegment = new LineSegment();
myLineSegment.Point = new Point(200, 70);

PathSegmentCollection myPathSegmentCollection = new PathSegmentCollection();

myPathFigure.Segments = myPathSegmentCollection;

PathFigureCollection myPathFigureCollection = new PathFigureCollection();

PathGeometry myPathGeometry = new PathGeometry();
myPathGeometry.Figures = myPathFigureCollection;

Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
myPath.Data = myPathGeometry;

      <PathFigure StartPoint="10,50">
        <LineSegment Point="200,70" />

This example is part of larger sample; for the complete sample, see the Geometries Sample.

More Code

How to: Create an Elliptical Arc


How to: Create a Cubic Bezier Curve

This example shows how to create a cubic Bezier curve. To create a cubic Bezier curve, use the PathGeometry, PathFigure, and BezierSegment classes. To display the resulting geometry, use a Path element, or use it with a GeometryDrawing or a DrawingContext. In the following examples, a cubic Bezier curve is drawn from (10, 100) to (300, 100). The curve has control points of (100, 0) and (200, 200).

How to: Create a Quadratic Bezier Curve

This example shows how to create a quadratic Bezier curve. To create a quadratic Bezier curve, use the PathGeometry, PathFigure, and QuadraticBezierSegment classes.

How to: Create a Composite Shape

This example shows how to create composite shapes using Geometry objects and display them using a Path element. In the following example, a LineGeometry, EllipseGeometry, and a RectangleGeometry are used with a GeometryGroup to create a composite shape. The geometries are then drawn using a Path element.

How to: Create Multiple Subpaths Within a PathGeometry

This example shows how to create multiple subpaths in a PathGeometry. To create multiple subpaths, you create a PathFigure for each subpath.

How to: Control the Fill of a Composite Shape

The FillRule property of a GeometryGroup or a PathGeometry, specifies a "rule" which the composite shape uses to determine whether a given point is part of the geometry. There are two possible values for FillRule: EvenOdd and Nonzero. The following sections will describe how to use these two rules.




.NET Framework

Supported in: 3.0
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

© 2014 Microsoft. All rights reserved.