Método ID2D1PathGeometry1::ComputePointAndSegmentAtLength(FLOAT,UINT32,constD2D1_MATRIX_3X2_F*,FLOAT,D2D1_POINT_DESCRIPTION*) (d2d1_1.h)

Calcula o ponto que existe a uma determinada distância ao longo da geometria do caminho, juntamente com o índice do segmento em que o ponto está e o vetor direcional nesse ponto.

Sintaxe

HRESULT ComputePointAndSegmentAtLength(
                 FLOAT                   length,
                 UINT32                  startSegment,
  [in, optional] const D2D1_MATRIX_3X2_F *worldTransform,
                 FLOAT                   flatteningTolerance,
  [out]          D2D1_POINT_DESCRIPTION  *pointDescription
);

Parâmetros

length

Tipo: FLOAT

A distância para percorrer o caminho.

startSegment

Tipo: UINT

O índice do segmento no qual começar a andar. Observação: esse índice é global para todo o caminho, não apenas para uma figura específica.

[in, optional] worldTransform

Tipo: const D2D1_MATRIX_3X2_F*

A transformação a ser aplicada ao caminho antes da caminhada.

flatteningTolerance

Tipo: FLOAT

A tolerância de nivelamento a ser usada ao caminhar ao longo de um arco ou segmento de Bézier. A tolerância de nivelamento é o erro máximo permitido ao construir uma aproximação poligonal da geometria. Nenhum ponto na representação poligonal divergirá da geometria original em mais do que a tolerância de nivelamento. Valores menores produzem resultados mais precisos, mas causam a execução lenta.

[out] pointDescription

Tipo: D2D1_POINT_DESCRIPTION*

Quando esse método retorna, contém uma descrição do ponto que pode ser encontrado no local determinado.

Valor retornado

Tipo: HRESULT

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

HRESULT Descrição
S_OK Não ocorreu nenhum erro.
E_OUTOFMEMORY O Direct2D não pôde alocar memória suficiente para concluir a chamada.
E_INVALIDARG Uma das entradas estava em um intervalo inválido.

Comentários

Um comprimento menor que 0 ou não é um número é tratado como se fosse 0.

Se length for maior que o comprimento total do caminho, o ponto final do caminho será retornado.

Ilustração de exemplo

Considere este exemplo que explica o valor de parâmetros diferentes retornados para a geometria de caminho fornecida. Um diagrama de uma geometria de caminho e seus comprimentos. Aqui estão dois cenários diferentes.

Você deseja recuperar o segmento com um comprimento L2

Você chama ComputePointAndSegmentAtLength(Length = L2, startSegment =0). A API retorna o seguinte:

Você deseja melhorar o desempenho de calcular um ponto em um determinado comprimento para animar ao longo de um caminho

Normalmente, os intervalos de tempo seriam pequenos e regulares, resultando em muitos pontos de animação por segmento. Para fins de demonstração, no entanto, vamos supor que você consulte ComputePointAndSegmentAtLength três vezes, com comprimentos de espaçamento irregular L1, L2, L3:

Chame ComputePointAndSegmentAtLength(Length = L1, startSegment = 0). A API retorna o seguinte:

Você chama ComputePointAndSegmentAtLength(Length = L2 - Length(AB), startSegment = 1). A API retorna o seguinte: Você chama ComputePointAndSegmentAtLength(= L3-length(AB)-length(BD), startSegment = 3). A API retorna o seguinte:

Requisitos

   
Cliente mínimo com suporte Windows 8 e Platform Update para Windows 7 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2012 e Platform Update para Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho d2d1_1.h
DLL D2d1.dll

Confira também

D2D1_MATRIX_3X2_F

D2D1_POINT_2F

D2D1_POINT_DESCRIPTION

ID2D1PathGeometry

ID2D1PathGeometry1