Metodo ID2D1PathGeometry1::ComputePointAndSegmentAtLength(FLOAT,UINT32,constD2D1_MATRIX_3X2_F*,FLOAT,D2D1_POINT_DESCRIPTION*) (d2d1_1.h)
Calcola il punto presente in corrispondenza di una determinata distanza lungo la geometria del percorso insieme all'indice del segmento su cui si trova il punto e il vettore direzionale in quel punto.
Sintassi
HRESULT ComputePointAndSegmentAtLength(
FLOAT length,
UINT32 startSegment,
[in, optional] const D2D1_MATRIX_3X2_F *worldTransform,
FLOAT flatteningTolerance,
[out] D2D1_POINT_DESCRIPTION *pointDescription
);
Parametri
length
Tipo: FLOAT
Distanza da percorrere lungo il percorso.
startSegment
Tipo: UINT
Indice del segmento in corrispondenza del quale iniziare a camminare. Nota: questo indice è globale per l'intero percorso, non solo una particolare figura.
[in, optional] worldTransform
Tipo: const D2D1_MATRIX_3X2_F*
Trasformazione da applicare al percorso prima di camminare.
flatteningTolerance
Tipo: FLOAT
Tolleranza di appiattimento da utilizzare quando si cammina lungo un arco o un segmento di Bezier. La tolleranza di appiattimento è l'errore massimo consentito durante la costruzione di un'approssimazione poligonale della geometria. Nessun punto nella rappresentazione poligonale divergerà dalla geometria originale per più della tolleranza flat. Valori inferiori producono risultati più precisi ma possono rallentare l'esecuzione.
[out] pointDescription
Tipo: D2D1_POINT_DESCRIPTION*
Quando termina, questo metodo contiene una descrizione del punto che può essere trovato nella posizione specificata.
Valore restituito
Tipo: HRESULT
Il metodo restituisce un valore HRESULT. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente.
HRESULT | Descrizione |
---|---|
S_OK | Non si sono verificati errori. |
E_OUTOFMEMORY | Direct2D non è riuscito ad allocare memoria sufficiente per completare la chiamata. |
E_INVALIDARG | Uno degli input si trovava in un intervallo non valido. |
Commenti
Una lunghezza minore di 0 o non è un numero viene considerata come se fosse 0.
Se length è maggiore della lunghezza totale del percorso, viene restituito il punto finale del percorso.
Illustrazione di esempio
Si consideri questo esempio che illustra il valore di parametri diversi restituiti per la geometria del percorso specificata. Ecco due scenari diversi.Si vuole recuperare il segmento a lunghezza L2
Si chiama ComputePointAndSegmentAtLength(Length = L2, startSegment =0). L'API restituisce quanto segue:- D2D1_POINT_DESCRIPTION::p oint = p2.
- D2D1_POINT_DESCRIPTION::endSegment = 3 (segmentO DE). Questo è il valore desiderato.
- D2D1_POINT_DESCRIPTION::lengthToEndSegment = length (AD).
Si desidera migliorare le prestazioni di calcolo di un punto a una determinata lunghezza per l'animazione lungo un percorso
In genere, gli intervalli di tempo sarebbero piccoli e regolari, con conseguente numero di punti di animazione per segmento. Ai fini della dimostrazione, tuttavia, presupporremo la query ComputePointAndSegmentAtLength tre volte, con lunghezze irregolarmente distanziate L1, L2, L3:Si chiama ComputePointAndSegmentAtLength(Length = L1, startSegment = 0). L'API restituisce quanto segue:
- D2D1_POINT_DESCRIPTION::p oint = P1.
- D2D1_POINT_DESCRIPTION::endSegment = 1 (segmento BC).
- D2D1_POINT_DESCRIPTION::lengthToEndSegment = length (AB).
- D2D1_POINT_DESCRIPTION::p oint = P2.
- D2D1_POINT_DESCRIPTION::endSegment = 3 (segmentO DE).
- D2D1_POINT_DESCRIPTION::lengthToEndSegment = length (AD).
- D2D1_POINT_DESCRIPTION::p oint = P3.
- D2D1_POINT_DESCRIPTION::endSegment = 3 (segmentO DE).
- D2D1_POINT_DESCRIPTION::lengthToEndSegment =0.
Requisiti
Client minimo supportato | Windows 8 e Platform Update per Windows 7 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2012 e Aggiornamento della piattaforma per Windows Server 2008 R2 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | d2d1_1.h |
DLL | D2d1.dll |