Markup Syntax



Jun 06, 2016 In wiki markup, a paragraph is a continuous line of text ending in two carriage returns. This is equivalent to a continuous line of text followed by a blank line. When rendered into HTML, the result is a line of text wrapped in a set of tags. E Wikitext, also known as Wiki markup or Wikicode, consists of the syntax and keywords used by the MediaWiki software to format a page. To learn how to see this hypertext markup, and to save an edit, see Help:Editing. Generally, coding can be copied and pasted, without writing new code.

-->

Paths are discussed in Shapes and Basic Drawing in WPF Overview and the Geometry Overview, however, this topic describes in detail the powerful and complex mini-language you can use to specify path geometries more compactly using Extensible Application Markup Language (XAML).

Prerequisites

To understand this topic, you should be familiar with the basic features of Geometry objects. For more information, see the Geometry Overview.

StreamGeometry and PathFigureCollection Mini-Languages

WPF provides two classes that provide mini-languages for describing geometric paths: StreamGeometry and PathFigureCollection.

  • You use the StreamGeometry mini-language 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 attribute syntax to create a StreamGeometry.

  • You use the PathFigureCollection mini-language when setting the Figures property of a PathGeometry. The following example uses a attribute syntax to create a PathFigureCollection for a PathGeometry.

Markup Syntax

As you can see from the preceding examples, the two mini-languages are very similar. It's always possible to use a PathGeometry in any situation where you could use a StreamGeometry; so which one should you use? Use a StreamGeometry when you don't need to modify the path after creating it; use a PathGeometry if you do need to modify the path.

For more information about the differences between PathGeometry and StreamGeometry objects, see the Geometry Overview.

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 don’t actually have to be separated by a comma or white space, but this can only be done when the resulting string is unambiguous. For instance, 2..3 is actually two numbers: '2.' And '.3'. Similarly, 2-3 is '2' and '-3'. Spaces are not required before or after commands, either.

Syntax

The Extensible Application Markup Language (XAML) attribute usage syntax for a StreamGeometry is composed of an optional FillRule value and one or more figure descriptions.

StreamGeometry XAML Attribute Usage
<objectproperty='[ fillRule] figureDescription[ figureDescription]* ' ... />

The Extensible Application Markup Language (XAML) attribute usage syntax for a PathFigureCollection is composed of one or more figure descriptions.

PathFigureCollection XAML Attribute Usage
<objectproperty='figureDescription[ figureDescription]* ' ... />
TermDescription
fillRuleSystem.Windows.Media.FillRule
Specifies whether the StreamGeometry uses the EvenOdd or NonzeroFillRule.
- F0 specifies the EvenOdd fill rule.
- F1 specifies the Nonzero fill rule.
If you omit this command, the subpath uses the default behavior, which is EvenOdd. If you specify this command, you must place it first.
figureDescriptionA figure composed of a move command, draw commands, and an optional close command.
moveCommanddrawCommands[closeCommand]
moveCommandA move command that specifies the start point of the figure. See the Move Command section.
drawCommandsOne or more drawing commands that describe the figure's contents. See the Draw Commands section.
closeCommandAn optional close command that closes figure. See the Close Command section.

Move Command

Specifies the start point of a new figure.

Syntax
MstartPoint
- or -
mstartPoint
TermDescription
startPointSystem.Windows.Point
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 though 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. The following table describes the move and draw commands.

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
LendPoint
- or -
lendPoint
TermDescription
endPointSystem.Windows.Point
The end point of the line.

An uppercase L indicates that endPoint is an absolute value; a lowercase l indicates that endPoint is an offset to the previous point, or (0,0) if none exists.

Horizontal Line Command

Creates a horizontal line between the current point and the specified x-coordinate. H 90 is an example of a valid horizontal line command.

Syntax
Hx
- or -
hx
TermDescription
xSystem.Double
The x-coordinate of the end point of the line.

Markup Link Url

An uppercase H indicates that x is an absolute value; a lowercase h indicates that x is an offset to the previous point, or (0,0) if none exists.

Vertical Line Command

Creates a vertical line between the current point and the specified y-coordinate. v 90 is an example of a valid vertical line command.

Syntax
Vy
- or -
vy
TermDescription
ySystem.Double
The y-coordinate of the end point of the line.

An uppercase V indicates that y is an absolute value; a lowercase v indicates that y is an offset to the previous point, or (0,0) if none exists.

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
CcontrolPoint1controlPoint2endPoint
- or -
ccontrolPoint1controlPoint2endPoint
TermDescription
controlPoint1System.Windows.Point
The first control point of the curve, which determines the starting tangent of the curve.
controlPoint2System.Windows.Point
The second control point of the curve, which determines the ending tangent of the curve.
endPointSystem.Windows.Point
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
QcontrolPointendPoint
- or -
qcontrolPointendPoint
TermDescription
controlPointSystem.Windows.Point
The control point of the curve, which determines the starting and ending tangents of the curve.
endPointSystem.Windows.Point
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, assume the first control point is 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
ScontrolPoint2endPoint
- or -
scontrolPoint2endPoint
TermDescription
controlPoint2System.Windows.Point
The control point of the curve, which determines the ending tangent of the curve.
endPointSystem.Windows.Point
The point to which the curve is drawn.

Smooth quadratic 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
TcontrolPointendPoint
- or -
tcontrolPointendPoint
TermDescription
controlPointSystem.Windows.Point
The control point of the curve, which determines the starting and tangent of the curve.
endPointSystem.Windows.Point
The point to which the curve is drawn.

Markdown Syntax

Elliptical Arc Command

Creates an elliptical arc between the current point and the specified end point.

Syntax
AsizerotationAngleisLargeArcFlagsweepDirectionFlagendPoint
- or -
asizerotationAngleisLargeArcFlagsweepDirectionFlagendPoint
TermDescription
sizeSystem.Windows.Size
The x- and y-radius of the arc.
rotationAngleSystem.Double
The rotation of the ellipse, in degrees.
isLargeArcFlagSet to 1 if the angle of the arc should be 180 degrees or greater; otherwise, set to 0.
sweepDirectionFlagSet to 1 if the arc is drawn in a positive-angle direction; otherwise, set to 0.
endPointSystem.Windows.Point
The point to which the arc is drawn.

Markup Syntax New Line

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 line-join (corner) between the last segment and the first segment of the figure.

Syntax
Z
- or -
z

Point Syntax

Describes the x- and y-coordinates of a point where (0,0) is the top left corner.

Syntax
x,y
- or -
xy
TermDescription
xSystem.Double
The x-coordinate of the point.
ySystem.Double
The y-coordinate of the point.

Special Values

Instead of a standard numerical value, you can also use the following special values. These values are case-sensitive.

Markdown Syntax Image

Markup Syntax

Infinity
Represents Double.PositiveInfinity.

-Infinity
Represents Double.NegativeInfinity.

NaN
Represents Double.NaN.

You may also use scientific notation. For example, +1.e17 is a valid value.

Wiki Markup Syntax

See also