Condividi tramite


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. Diagramma di una geometria di percorso e delle relative lunghezze. Ecco due scenari diversi.

Si vuole recuperare il segmento a lunghezza L2

Si chiama ComputePointAndSegmentAtLength(Length = L2, startSegment =0). L'API restituisce quanto segue:

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:

Si chiama ComputePointAndSegmentAtLength(Length = L2 - Length(AB), startSegment = 1). L'API restituisce quanto segue: Si chiama ComputePointAndSegmentAtLength(= L3-length(AB)-length(BD), startSegment = 3). L'API restituisce quanto segue:

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

Vedi anche

D2D1_MATRIX_3X2_F

D2D1_POINT_2F

D2D1_POINT_DESCRIPTION

ID2D1PathGeometry

ID2D1PathGeometry1