InkStrokeRenderingSegment InkStrokeRenderingSegment InkStrokeRenderingSegment InkStrokeRenderingSegment InkStrokeRenderingSegment Class


A single segment of a complete ink stroke.

A single segment consists of a starting point, an ending point, and two Bezier control points. However, for a series of segments that make up a stroke, the last point of the previous segment is the first point of the current segment. This means that only the ending point for each segment is required to represent a complete stroke.

Each stroke is a vector of InkStrokeRenderingSegment objects with the first segment identified by a single starting point and all remaining segments identified by an ending point and two Bezier control points.

public : sealed class InkStrokeRenderingSegment
struct winrt::Windows::UI::Input::Inking::InkStrokeRenderingSegment
public sealed class InkStrokeRenderingSegment
Public NotInheritable Class InkStrokeRenderingSegment
// This class does not provide a public constructor.

Windows 10 requirements

Device family
Windows 10 (introduced v10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)


The function in the following example demonstrates how a cubic Bezier curve can be derived for each segment of an ink stroke (stroke) by using the bezierCurveTo method. Each curve is then rendered through the 2-D context of the canvas (ctx).

// Render all strokes using bezier curves instead of line segments.
function renderAllStrokes()
    statusMessage.innerText += "Render strokes as bezier curves."

    // Clear the drawing surface of existing strokes.
    inkContext.clearRect(0, 0, inkCanvas.width, inkCanvas.height);

    // Enumerate through each stroke.
        function (stroke)
            inkContext.lineWidth = strokeWidth; 
            inkContext.strokeStyle = strokeColor; 

            // Enumerate through each line segment of the stroke.
            var first = true;
            var x = stroke.getRenderingSegments().length;
                function (segment)
                    // Move to the starting location of the stroke.
                    if (first)
                        inkContext.moveTo(segment.position.x, segment.position.y);
                        first = false;
                    // Calculate the bezier curve for the segment.
                                                 segment.position.x, segment.position.y);
            // Draw the stroke.

For the complete example, see Ink App sample.


Set the FitToCurve property of DrawingAttributes to true if you want an ink stroke to be rendered with cubic Bezier curves. Otherwise, the stroke is rendered with straight line segments.


: This class is not agile, which means that you need to consider its threading model and marshaling behavior. For more info, see Threading and Marshaling (C++/CX) and Using Windows Runtime objects in a multithreaded environment (.NET).


BezierControlPoint1 BezierControlPoint1 BezierControlPoint1 BezierControlPoint1 BezierControlPoint1

Gets the first control point for the Bézier curve.

BezierControlPoint2 BezierControlPoint2 BezierControlPoint2 BezierControlPoint2 BezierControlPoint2

Gets the second control point for the Bézier curve.

Position Position Position Position Position

Gets the end point of the segment.

Pressure Pressure Pressure Pressure Pressure

Gets the pressure of the contact on the digitizer surface.

TiltX TiltX TiltX TiltX TiltX

Gets the tilt of the contact along the x axis.

TiltY TiltY TiltY TiltY TiltY

Gets the tilt of the contact along the y axis.

Twist Twist Twist Twist Twist

Gets the twist of the contact along the rotational axis.

See also