MÉTHODES ID2D1Geometry::Outline
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_3X2_F,ID2D1SimplifiedGeometrySink&*) | Calcule le contour de la géométrie et écrit le résultat dans un ID2D1SimplifiedGeometrySink. |
Outline(D2D1_MATRIX_3X2_F*,ID2D1SimplifiedGeometrySink*) | Calcule le contour de la géométrie et écrit le résultat dans un ID2D1SimplifiedGeometrySink. |
Outline(D2D1_MATRIX_3X2_F,FLOAT,ID2D1SimplifiedGeometrySink&*) | Calcule le contour de la géométrie et écrit le résultat dans un ID2D1SimplifiedGeometrySink. |
Outline(D2D1_MATRIX_3X2_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 figures les plus externes de la géométrie de sortie sont toutes orientées dans le sens inverse des aiguilles d’une montre.
- La géométrie de sortie est invariante en mode 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 combinaison 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 intersection automatique. Il utilise la tolérance d’aplatissement par défaut et ne doit donc pas être utilisé 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 |
|
DLL |
|