Silverlight Path Markup Syntax
This overview describes the Extensible Application Markup Language (XAML) usage syntax for describing paths. Microsoft Silverlight supports a powerful and complex minilanguage that you can use to describe geometric paths.
This topic contains the following sections:
 Prerequisites
 The Path MiniLanguage
 Move Command
 Draw Commands
 The Close Command
 Point Syntax
 Special Values
Prerequisites
To understand this topic, you should be familiar with the basic features of Geometry objects. For more information, see the Silverlight Geometries Overview.
The Path MiniLanguage
Silverlight provides a minilanguage attribute syntax for describing geometric paths. You use this minilanguage when setting a property of type Geometry, such as the Clip property of a UIElement or the Data property of a Path element. The following example uses the path attribute syntax to create a shape.
XAML 

<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,200 300,100" /> </Canvas> 
A Note About White Space
For brevity, a single space is shown in the syntax sections that follow, but multiple spaces are also acceptable wherever a single space is shown.
Two numbers do not have to be separated by a comma or white space, but only when the resulting string is unambiguous. For example, 2..3
is actually two numbers: "2." And ".3". Similarly, 23
consists of the two numbers "2" and "3". Spaces are not required before or after commands, either.
Syntax
The Extensible Application Markup Language (XAML) path syntax consists of an optional FillRule value and one or more figure descriptions.
Path XAML attribute usage 


Term  Description 

fillRule 
Specifies whether the path uses the EvenOdd or NonZero fill rule value.
If you omit this command, the path uses the default behavior, which is EvenOdd. If you specify this command, you must place it first. 
figureDescription 
A figure composed of a move command, draw commands, and an optional close command. moveCommand drawCommands 
moveCommand 
A move command that specifies the start point of the figure. See the Move Command section. 
drawCommands 
One or more draw commands that describe the figure's contents. See the Draw Commands section. 
closeCommand 
An optional close command that closes the figure. See the Close Command section. 
Move Command
Specifies the start point of a new figure.
Syntax 

 or 

Term  Description 

startPoint 
The start point of a new figure. 
An uppercase M indicates that startPoint is an absolute value; a lowercase m indicates that startPoint is an offset to the previous point, or (0,0) if none exists. If you list multiple points after the move command, a line is drawn to those points as if you specified the line command.
Draw Commands
A draw command can consist of several shape commands. The following shape commands are available: line, horizontal line, vertical line, cubic Bezier curve, quadratic Bezier curve, smooth cubic Bezier curve, smooth quadratic Bezier curve, and elliptical arc.
You enter each command by using either an uppercase or a lowercase letter: uppercase letters denote absolute values and lowercase letters denote relative values: the control points for that segment are relative to the end point of the preceding example. When sequentially entering more than one command of the same type, you can omit the duplicate command entry; for example, L 100,200 300,400
is equivalent to L 100,200 L 300,400
.
Line Command
Creates a straight line between the current point and the specified end point. l 20 30
and L 20,30
are examples of valid line commands.
Syntax 

 or 

Term  Description 

endPoint 
The end point of the line. 
Horizontal Line Command
Creates a horizontal line between the current point and the specified xcoordinate. H 90
is an example of a valid horizontal line command.
Syntax 

 or 

Term  Description 

x 
The xcoordinate of the end point of the line. 
Vertical Line Command
Creates a vertical line between the current point and the specified ycoordinate. v 90
is an example of a valid vertical line command.
Syntax 

 or 

Term  Description 

y 
The ycoordinate of the end point of the line. 
Cubic Bezier Curve Command
Creates a cubic Bezier curve between the current point and the specified end point by using the two specified control points (controlPoint1 and controlPoint2). C 100,200 200,400 300,200
is an example of a valid curve command.
Syntax 

 or 

Term  Description 

controlPoint1 
The first control point of the curve, which determines the starting tangent of the curve. 
controlPoint2 
The second control point of the curve, which determines the ending tangent of the curve. 
endPoint 
The point to which the curve is drawn. 
Quadratic Bezier Curve Command
Creates a quadratic Bezier curve between the current point and the specified end point by using the specified control point (controlPoint). q 100,200 300,200
is an example of a valid quadratic Bezier curve command.
Syntax 

 or 

Term  Description 

controlPoint 
The control point of the curve, which determines the starting and ending tangents of the curve. 
endPoint 
The point to which the curve is drawn. 
Smooth Cubic Bezier Curve Command
Creates a cubic Bezier curve between the current point and the specified end point. The first control point is assumed to be the reflection of the second control point of the previous command relative to the current point. If there is no previous command or if the previous command was not a cubic Bezier curve command or a smooth cubic Bezier curve command, the first control point is assumed to be coincident with the current point. The second control point, the control point for the end of the curve, is specified by controlPoint2. For example, S 100,200 200,300
is a valid smooth cubic Bezier curve command.
Syntax 

 or 

Term  Description 

controlPoint2 
The control point of the curve, which determines the ending tangent of the curve. 
endPoint 
The point to which the curve is drawn. 
Smooth Cubic Bezier Curve Command
Creates a quadratic Bezier curve between the current point and the specified end point. The control point is assumed to be the reflection of the control point of the previous command relative to the current point. If there is no previous command or if the previous command was not a quadratic Bezier curve command or a smooth quadratic Bezier curve command, the control point is coincident with the current point.
Syntax 

 or 

Term  Description 

controlPoint 
The control point of the curve, which determines the starting and tangent of the curve. 
endPoint 
The point to which the curve is drawn. 
Elliptical Arc Command
Creates an elliptical arc between the current point and the specified end point.
Syntax 

 or 

Term  Description 

size 
x, y pair The x and yradius of the arc. 
rotationAngle 
The rotation of the ellipse, in degrees. 
isLargeArcFlag 
Set to 1 if the angle of the arc should be 180 degrees or greater; otherwise, set to 0. 
sweepDirectionFlag 
Set to 1 if the arc is drawn in a positiveangle direction; otherwise, set to 0. 
endPoint 
The point to which the arc is drawn. 
The Close Command
The close command ends the current figure and creates a line that connects the current point to the starting point of the figure. This command creates a linejoin (corner) between the last segment and the first segment of the figure.
Syntax 

 or 

Point Syntax
Point syntax describes the xcoordinate and ycoordinate of a point.
Syntax 

x  or  x y 
Term  Description 

x 
The xcoordinate of the point. 
y 
The ycoordinate of the point. 
Special Values
You can also use the following special values instead of the standard numerical values. These values are casesensitive.
Infinity
Represents the positive infinity Double value.
Infinity
Represents the negative infinity Double value.
NaN
Represents the NaN Double value.
You may also use scientific notation. For example, +1.e17
is a valid value.
See Also
PathGeometry
Geometries Overview
Overviews and Howto Topics