Class PathSegment
A PathSegment represents a straight line or curved segment of a path between two or more points that are part of a PathFigure.
Namespace: Northwoods.Go
Assembly: Northwoods.GoDiagram.Avalonia.dll
Syntax
public class PathSegment
Remarks
The very first point is given by the StartX and StartY properties. After the first segment the beginning point of the next segment is the same as the end point of the previous segment. For most types of PathSegments the end point of the segment is given by EndX and EndY.
A PathSegment must not be modified once its containing PathFigure's Geometry has been assigned to a Shape.
Constructors
PathSegment(SegmentType, double, double, double, double, double, double, bool)
Constructs a segment that goes nowhere unless you specify some Points.
The very first point of a path is specified in the containing PathFigure by its StartX and StartY properties.
Declaration
public PathSegment(SegmentType type = SegmentType.Line, double ex = 0, double ey = 0, double x1 = 0, double y1 = 0, double x2 = 0, double y2 = 0, bool clockwise = false)
Parameters
Type | Name | Description |
---|---|---|
SegmentType | type | if not supplied, the default PathSegment type is Line. But if the type is supplied, one must also provide the endpoint X and Y values, either as arguments in this constructor or by setting the EndX and EndY properties. If the type is QuadraticBezier, the X1 and Y1 control point values must both be supplied. If the type is Bezier, X1, Y1, X2, and Y2 control point values must all be supplied.
|
double | ex | optional: the X coordinate of the end point, or the startAngle of an Arc. |
double | ey | optional: the Y coordinate of the end point, or the sweepAngle of an Arc. |
double | x1 | optional: the X coordinate of the first bezier control point, or the centerX of an Arc, or the radiusX of an SvgArc. |
double | y1 | optional: the Y coordinate of the first bezier control point, or the centerY of an Arc, or the radiusY of an SvgArc. |
double | x2 | optional: the X coordinate of the second cubic bezier control point, or the radiusX of an Arc, or the xAxisRotation of an SvgArc. |
double | y2 | optional: the Y coordinate of the second cubic bezier control point, or the radiusY of an Arc, or whether this is the larger arc of an SvgArc. |
bool | clockwise | optional: whether an SvgArc goes clockwise or counterclockwise. |
Remarks
The segment type must be one of the following values: Line, Bezier, QuadraticBezier, Arc, SvgArc. You will want to add a new instance of a PathSegment to the Segments list of a PathFigure.
Properties
CenterX
Gets or sets the center X value of the Arc for a PathSegment of type Arc.
Declaration
public double CenterX { get; set; }
Property Value
Type | Description |
---|---|
double |
CenterY
Gets or sets the center Y value of the Arc for a PathSegment of type Arc.
Declaration
public double CenterY { get; set; }
Property Value
Type | Description |
---|---|
double |
EndX
Gets or sets the X coordinate of the end point for all types of PathSegment except Arc. The default value is zero.
Declaration
public double EndX { get; set; }
Property Value
Type | Description |
---|---|
double |
EndY
Gets or sets the Y coordinate of the end point for all types of PathSegment except Arc. The default value is zero.
Declaration
public double EndY { get; set; }
Property Value
Type | Description |
---|---|
double |
IsClockwiseArc
Gets or sets the clockwise-flag for a PathSegment of type SvgArc. SVG Arcs specify a radius and an endpoint, and are always a portion of an ellipse.
Declaration
public bool IsClockwiseArc { get; set; }
Property Value
Type | Description |
---|---|
bool |
Remarks
The parameters allow for two potential ellipses and four potential arcs. A clockwise-flag set to true will use one of the two possible positive-angle arcs, and false will use one of the two negative-angle arcs. Which arc is chosen (small or large) depends on the value of IsLargeArc. For more information see the visual examples in the SVG Arc specification (w3.org)
IsClosed
Gets or sets whether the path is closed after this PathSegment. Default value is false.
Declaration
public bool IsClosed { get; set; }
Property Value
Type | Description |
---|---|
bool |
IsLargeArc
Gets or sets the large-arc-flag for a PathSegment of type SvgArc. SVG Arcs specify a radius and an endpoint, and are always a portion of an ellipse.
Declaration
public bool IsLargeArc { get; set; }
Property Value
Type | Description |
---|---|
bool |
Remarks
The parameters allow for two potential ellipses and four potential arcs. A large-arc-flag set to true will choose the larger of the two arc sweeps. Which way the arc sweeps (positive angle or negative angle) depends on the value of IsClockwiseArc For more information see the visual examples in the SVG Arc specification (w3.org)
Point1X
Gets or sets the X value of the first control point for a PathSegment of type Bezier or QuadraticBezier.
Declaration
public double Point1X { get; set; }
Property Value
Type | Description |
---|---|
double |
Point1Y
Gets or sets the Y value of the first control point for a PathSegment of type Bezier or QuadraticBezier.
Declaration
public double Point1Y { get; set; }
Property Value
Type | Description |
---|---|
double |
Point2X
Gets or sets the X value of the second control point for a PathSegment of type cubic Bezier.
Declaration
public double Point2X { get; set; }
Property Value
Type | Description |
---|---|
double |
Point2Y
Gets or sets the Y value of the second control point for a PathSegment of type cubic Bezier.
Declaration
public double Point2Y { get; set; }
Property Value
Type | Description |
---|---|
double |
RadiusX
Gets or sets the X value of the radius for a PathSegment of type Arc or SvgArc. Value must be a positive number.
Declaration
public double RadiusX { get; set; }
Property Value
Type | Description |
---|---|
double |
RadiusY
Gets or sets the Y value of the radius for a PathSegment of type Arc or SvgArc. Value must be a positive number.
Declaration
public double RadiusY { get; set; }
Property Value
Type | Description |
---|---|
double |
StartAngle
Gets or sets the starting angle for a PathSegment of type Arc. Value must be within the range: (0 <= value < 360).
Declaration
public double StartAngle { get; set; }
Property Value
Type | Description |
---|---|
double |
SweepAngle
Gets or sets the length of angle in degrees, or amount of arc to "sweep" for a PathSegment of type Arc. Must be between -360 and 360, inclusive.
Declaration
public double SweepAngle { get; set; }
Property Value
Type | Description |
---|---|
double |
Type
Gets or sets the type of the PathSegment. The value must be one of the following: Line, Bezier, QuadraticBezier, Arc, Move, Arc, and SvgArc.
Declaration
public SegmentType Type { get; set; }
Property Value
Type | Description |
---|---|
SegmentType |
XAxisRotation
Gets or sets the X-axis rotation for a PathSegment of type SvgArc. X-axis rotation is used to rotate the ellipse that the arc is created from, and must be between 0 and 360 degrees. Default is 0.
Declaration
public double XAxisRotation { get; set; }
Property Value
Type | Description |
---|---|
double |
Methods
Close()
Closes the path after this PathSegment
Declaration
public PathSegment Close()
Returns
Type | Description |
---|---|
PathSegment | returns this PathSegment. |
Copy()
Create a copy of this PathSegment, of the same type and with the same point values.
Declaration
public PathSegment Copy()
Returns
Type | Description |
---|---|
PathSegment |