Metodi ID2D1Geometry::Outline
Calcola la struttura della geometria e scrive il risultato in un ID2D1SimplifiedGeometrySink.
Elenco di overload
metodo | Descrizione |
---|---|
Outline(D2D1_MATRIX_3X2_F&,ID2D1SimplifiedGeometrySink*) | Calcola la struttura della geometria e scrive il risultato in un ID2D1SimplifiedGeometrySink. |
Outline(D2D1_MATRIX_3X2_F*,ID2D1SimplifiedGeometrySink*) | Calcola la struttura della geometria e scrive il risultato in un ID2D1SimplifiedGeometrySink. |
Outline(D2D1_MATRIX_3X2_F&,FLOAT,ID2D1SimplifiedGeometrySink*) | Calcola la struttura della geometria e scrive il risultato in un ID2D1SimplifiedGeometrySink. |
Outline(D2D1_MATRIX_3X2_F*,FLOAT,ID2D1SimplifiedGeometrySink*) | Calcola la struttura della geometria e scrive il risultato in un ID2D1SimplifiedGeometrySink. |
Osservazioni:
Il metodo Outline consente al chiamante di produrre una geometria con un riempimento equivalente alla geometria di input, con le proprietà aggiuntive seguenti:
- La geometria di output non contiene intersezioni trasverse; cioè, i segmenti possono toccare, ma non si incrociano mai.
- Le figure più esterne nella geometria di output sono tutte orientate in senso antiorario.
- La geometria di output è invariante in modalità riempimento; ovvero, il riempimento della geometria non dipende dalla scelta della modalità di riempimento. Per altre informazioni sulla modalità di riempimento, vedere D2D1_FILL_MODE.
Inoltre, il metodo Outline può essere utile per rimuovere parti ridondanti delle geometrie dette per semplificare geometrie complesse. Può essere utile anche in combinazione con ID2D1GeometryGroup per creare unioni tra più geometrie contemporaneamente.
Esempi
Nel codice seguente viene illustrato come usare Outline per costruire una geometria equivalente senza intersezioni self-intersezioni. Usa la tolleranza di appiattimento predefinita e pertanto non deve essere usata con geometrie molto piccole.
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;
}
Requisiti
Requisito | Valore |
---|---|
Libreria |
|
DLL |
|