Partager via


ID2D1PathGeometry::Open, méthode (d2d1.h)

Récupère le récepteur geometry utilisé pour remplir la géométrie de chemin avec des figures et des segments.

Syntaxe

HRESULT Open(
  [out] ID2D1GeometrySink **geometrySink
);

Paramètres

[out] geometrySink

Type : ID2D1GeometrySink**

Lorsque cette méthode retourne, geometrySink contient l’adresse d’un pointeur vers le récepteur geometry utilisé pour remplir la géométrie de chemin avec des figures et des segments. Ce paramètre est passé sans être initialisé.

Valeur retournée

Type : HRESULT

Si cette méthode réussit, elle retourne S_OK. Sinon, il retourne un code d’erreur HRESULT .

Remarques

Étant donné que les géométries de chemin d’accès sont immuables et ne peuvent être remplies qu’une seule fois, il s’agit d’une erreur d’appeler Open sur une géométrie de chemin d’accès plusieurs fois.

Notez que le mode de remplissage est D2D1_FILL_MODE_ALTERNATE par défaut. Pour définir le mode de remplissage, appelez SetFillMode avant le premier appel à BeginFigure. Si vous ne le faites pas, le récepteur geometry est placé dans un état d’erreur.

Exemples

L’exemple suivant crée un ID2D1PathGeometry, récupère un récepteur et utilise le récepteur pour définir une forme de sablier. Pour obtenir l’exemple complet, consultez Comment dessiner et remplir une forme complexe.

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);
    }
}

Configuration requise

   
Client minimal pris en charge Windows 7, Windows Vista avec SP2 et Mise à jour de plateforme pour Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 R2, Windows Server 2008 avec SP2 et Mise à jour de plateforme pour Windows Server 2008 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête d2d1.h
Bibliothèque D2d1.lib
DLL D2d1.dll

Voir aussi

ID2D1PathGeometry