ID2D1Geometry :: Outline, méthodes

Calcule le contour de la géométrie et écrit le résultat dans un ID2D1SimplifiedGeometrySink.

Liste de surcharge

Méthode Description
Outline (D2D1 _ Matrix _ matrice _ F&, ID2D1SimplifiedGeometrySink * ) Calcule le contour de la géométrie et écrit le résultat dans un ID2D1SimplifiedGeometrySink.
Outline (D2D1 _ Matrix _ matrice _ F * , ID2D1SimplifiedGeometrySink * ) Calcule le contour de la géométrie et écrit le résultat dans un ID2D1SimplifiedGeometrySink.
Outline (D2D1 _ Matrix _ matrice _ F&, float, ID2D1SimplifiedGeometrySink * ) Calcule le contour de la géométrie et écrit le résultat dans un ID2D1SimplifiedGeometrySink.
Outline (D2D1 _ Matrix _ matrice _ F * , float, ID2D1SimplifiedGeometrySink * ) Calcule le contour de la géométrie et écrit le résultat dans un ID2D1SimplifiedGeometrySink.

Notes

La méthode Outline permet à l’appelant de produire une géométrie avec un remplissage équivalent à la géométrie d’entrée, avec les propriétés supplémentaires suivantes :

  • La géométrie de sortie ne contient aucune intersection transversale ; autrement dit, les segments peuvent toucher, mais ils ne se croisent jamais.
  • Les chiffres les plus à l’extérieur dans la géométrie de sortie sont tous orientés vers le sens inverse.
  • La géométrie de sortie est invariant en mode de remplissage ; autrement dit, le remplissage de la géométrie ne dépend pas du choix du mode de remplissage. Pour plus d’informations sur le mode de remplissage, consultez d2d1 _ Fill _ mode.

En outre, la méthode Outline peut être utile pour supprimer des parties redondantes de ces géométries afin de simplifier les géométries complexes. Il peut également être utile en association avec ID2D1GeometryGroup pour créer des unions entre plusieurs géométries simultanément.

Exemples

Le code suivant montre comment utiliser Outline pour construire une géométrie équivalente sans auto-intersections. Elle utilise la tolérance d’aplatissement par défaut et ne doit donc pas être utilisée avec de très petites géométries.

HRESULT D2DOutline(
    ID2D1Geometry *pGeometry,
    ID2D1Geometry **ppGeometry
    )
{
    HRESULT hr;
    ID2D1Factory *pFactory = NULL;
    pGeometry->GetFactory(&pFactory);

    ID2D1PathGeometry *pPathGeometry = NULL;
    hr = pFactory->CreatePathGeometry(&pPathGeometry);

    if (SUCCEEDED(hr))
    {
        ID2D1GeometrySink *pSink = NULL;
        hr = pPathGeometry->Open(&pSink);

        if (SUCCEEDED(hr))
        {
            hr = pGeometry->Outline(NULL, pSink);

            if (SUCCEEDED(hr))
            {
                hr = pSink->Close();

                if (SUCCEEDED(hr))
                {
                    *ppGeometry = pPathGeometry;
                    (*ppGeometry)->AddRef();
                }
            }
            pSink->Release();
        }
        pPathGeometry->Release();
    }

    pFactory->Release();

    return hr;
}

Spécifications

Condition requise Valeur
Bibliothèque
D2d1. lib
DLL
D2d1.dll

Voir aussi

ID2D1Geometry