ID2D1GeometrySink interface

Describes a geometric path that can contain lines, arcs, cubic Bezier curves, and quadratic Bezier curves.

Methods

The ID2D1GeometrySink interface has these methods.

Method Description
ID2D1GeometrySink::AddArc Creates a single arc and adds it to the path geometry.
ID2D1GeometrySink::AddArc Adds a single arc to the path geometry.
ID2D1GeometrySink::AddBezier Creates a cubic Bezier curve between the current point and the specified endpoint.
ID2D1GeometrySink::AddBezier Creates a cubic Bezier curve between the current point and the specified end point.
ID2D1GeometrySink::AddLine Creates a line segment between the current point and the specified end point and adds it to the geometry sink.
ID2D1GeometrySink::AddQuadraticBezier Creates a quadratic Bezier curve between the current point and the specified end point and adds it to the geometry sink.
ID2D1GeometrySink::AddQuadraticBezier Creates a quadratic Bezier curve between the current point and the specified end point.
ID2D1GeometrySink::AddQuadraticBeziers Adds a sequence of quadratic Bezier segments as an array in a single call.

Remarks

The ID2D1GeometrySink interface extends the ID2D1SimplifiedGeometrySink interface to add support for arcs and quadratic beziers, as well as functions for adding single lines and cubic beziers.

A geometry sink consists of one or more figures. Each figure is made up of one or more line, curve, or arc segments. To create a figure, call the BeginFigure method, specify the figure's start point, and then use its Add methods (such as AddLine and AddBezier) to add segments. When you are finished adding segments, call the EndFigure method. You can repeat this sequence to create additional figures. When you are finished creating figures, call the Close method.

Examples

The following example creates an ID2D1PathGeometry, retrieves a sink, and uses it to define an hourglass shape. For the complete example, see How to Draw and Fill a Complex Shape.

C++
ID2D1GeometrySink *pSink = NULL;
C++
// Create a path geometry.
if (SUCCEEDED(hr))
{
    hr = m_pD2DFactory->CreatePathGeometry(&m_pPathGeometry);
if (SUCCEEDED(hr))
{
    // Write to the path geometry using the geometry sink.
    hr = m_pPathGeometry->Open(&pSink);

    if (SUCCEEDED(hr))
    {
        pSink->BeginFigure(
            D2D1::Point2F(0, 0),
            D2D1_FIGURE_BEGIN_FILLED
            );

        pSink->AddLine(D2D1::Point2F(200, 0));

        pSink->AddBezier(
            D2D1::BezierSegment(
                D2D1::Point2F(150, 50),
                D2D1::Point2F(150, 150),
                D2D1::Point2F(200, 200))
            );

        pSink->AddLine(D2D1::Point2F(0, 200));

        pSink->AddBezier(
            D2D1::BezierSegment(
                D2D1::Point2F(50, 150),
                D2D1::Point2F(50, 50),
                D2D1::Point2F(0, 0))
            );

        pSink->EndFigure(D2D1_FIGURE_END_CLOSED);

        hr = pSink->Close();
    }
    SafeRelease(&pSink);
}

}

Requirements

   
Minimum supported client Windows 7, Windows Vista with SP2 and Platform Update for Windows Vista [desktop apps | UWP apps]
Minimum supported server Windows Server 2008 R2, Windows Server 2008 with SP2 and Platform Update for Windows Server 2008 [desktop apps | UWP apps]
Target Platform Windows
Header d2d1.h

See Also

Geometries Overview

How to Draw and Fill a Complex Shape

ID2D1SimplifiedGeometrySink