Métodos ID2D1Geometry::Outline
Calcula el esquema de la geometría y escribe el resultado en un ID2D1SimplifiedGeometrySink.
Lista de sobrecarga
Método | Descripción |
---|---|
Outline(D2D1_MATRIX_3X2_F,ID2D1SimplifiedGeometrySink&*) | Calcula el esquema de la geometría y escribe el resultado en un ID2D1SimplifiedGeometrySink. |
Outline(D2D1_MATRIX_3X2_F*,ID2D1SimplifiedGeometrySink*) | Calcula el esquema de la geometría y escribe el resultado en un ID2D1SimplifiedGeometrySink. |
Outline(D2D1_MATRIX_3X2_F,FLOAT,ID2D1SimplifiedGeometrySink&*) | Calcula el esquema de la geometría y escribe el resultado en un ID2D1SimplifiedGeometrySink. |
Outline(D2D1_MATRIX_3X2_F*,FLOAT,ID2D1SimplifiedGeometrySink*) | Calcula el esquema de la geometría y escribe el resultado en un ID2D1SimplifiedGeometrySink. |
Comentarios
El método Outline permite al autor de la llamada generar una geometría con un relleno equivalente a la geometría de entrada, con las siguientes propiedades adicionales:
- La geometría de salida no contiene intersecciones transversales; es decir, los segmentos pueden tocar, pero nunca cruzan.
- Las figuras más externas de la geometría de salida están orientadas a las agujas del reloj.
- La geometría de salida es invariable en modo de relleno; es decir, el relleno de la geometría no depende de la elección del modo de relleno. Para obtener más información sobre el modo de relleno, consulte D2D1_FILL_MODE.
Además, el método Outline puede ser útil para quitar partes redundantes de dichas geometrías para simplificar geometrías complejas. También puede ser útil en combinación con ID2D1GeometryGroup para crear uniones entre varias geometrías simultáneamente.
Ejemplos
En el código siguiente se muestra cómo usar Outline para construir una geometría equivalente sin intersecciones automáticas. Usa la tolerancia de acoplamiento predeterminada y, por lo tanto, no debe usarse con geometrías muy pequeñas.
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;
}
Requisitos
Requisito | Value |
---|---|
Biblioteca |
|
Archivo DLL |
|