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. 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:- D2D1_POINT_DESCRIPTION::p oint = p2.
- D2D1_POINT_DESCRIPTION::endSegment = 3 (segmento DE). Esse é o valor desejado.
- D2D1_POINT_DESCRIPTION::lengthToEndSegment = length (AD).
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:
- D2D1_POINT_DESCRIPTION::p oint = P1.
- D2D1_POINT_DESCRIPTION::endSegment = 1 (segmento BC).
- D2D1_POINT_DESCRIPTION::lengthToEndSegment = comprimento (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.
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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de