ID2D1GeometrySink interface (d2d1.h)

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

Inheritance

The ID2D1GeometrySink interface inherits from ID2D1SimplifiedGeometrySink. ID2D1GeometrySink also has these types of members:

Methods

The ID2D1GeometrySink interface has these methods.

 
ID2D1GeometrySink::AddArc

Adds a single arc to the path geometry.
ID2D1GeometrySink::AddArc

Creates a single arc and adds it to the path geometry.
ID2D1GeometrySink::AddBezier

Creates a cubic Bezier curve between the current point and the specified end point.
ID2D1GeometrySink::AddBezier

Creates a cubic Bezier curve between the current point and the specified endpoint.
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.
ID2D1GeometrySink::AddQuadraticBezier

Creates a quadratic Bezier curve between the current point and the specified end point and adds it to the geometry sink.
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.

ID2D1GeometrySink *pSink = NULL;


// 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

Requirement Value
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