Метод ID2D1PathGeometry1::ComputePointAndSegmentAtLength(FLOAT,UINT32,constD2D1_MATRIX_3X2_F*,FLOAT,D2D1_POINT_DESCRIPTION*) (d2d1_1.h)
Вычисляет точку, которая существует на заданном расстоянии вдоль геометрии пути, а также индекс сегмента, на который находится точка, и направленный вектор в этой точке.
Синтаксис
HRESULT ComputePointAndSegmentAtLength(
FLOAT length,
UINT32 startSegment,
[in, optional] const D2D1_MATRIX_3X2_F *worldTransform,
FLOAT flatteningTolerance,
[out] D2D1_POINT_DESCRIPTION *pointDescription
);
Параметры
length
Тип: FLOAT
Расстояние, на который нужно идти по пути.
startSegment
Тип: UINT
Индекс сегмента, с которого начинается ходьба. Примечание. Этот индекс является глобальным для всего пути, а не только для конкретной цифры.
[in, optional] worldTransform
Тип: const D2D1_MATRIX_3X2_F*
Преобразование, применяемого к пути перед переходом.
flatteningTolerance
Тип: FLOAT
Погрешность выравнивания, используемая при ходьбе по дуге или сегменту Безье. Погрешность сглаживания — это максимальная погрешность, допускаемая при построении многоугольной аппроксимации геометрии. Ни один пункт в многоугольном представлении не будет отличаться от исходной геометрии на большее, чем погрешность сплощенности. Чем меньше значения, тем точнее результаты и медленнее производится выполнение.
[out] pointDescription
Тип: D2D1_POINT_DESCRIPTION*
При возврате этого метода содержит описание точки, которую можно найти в заданном расположении.
Возвращаемое значение
Тип: HRESULT
Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.
HRESULT | Описание: |
---|---|
S_OK | Без ошибок. |
E_OUTOFMEMORY | Direct2D не удалось выделить достаточно памяти для завершения вызова. |
E_INVALIDARG | Один из входных данных находился в недопустимом диапазоне. |
Комментарии
Длина, которая меньше 0 или не является числом, обрабатывается как если бы она была 0.
Если длина превышает общую длину пути, возвращается конечная точка пути.
Пример иллюстрации
Рассмотрим этот пример, объясняющий значение различных параметров, возвращаемых для заданной геометрии пути.![Схема геометрии пути и его длины.](images/computepointandsegmentatlength.png)
Вы хотите получить сегмент с длиной L2
Вы вызываете ComputePointAndSegmentAtLength(Length = L2, startSegment =0). API возвращает следующее:- D2D1_POINT_DESCRIPTION::p oint = p2.
- D2D1_POINT_DESCRIPTION::endSegment = 3 (сегмент DE). Это нужное значение.
- D2D1_POINT_DESCRIPTION::lengthToEndSegment = length (AD).
Вы хотите повысить производительность вычисления точки заданной длины для анимации по пути
Как правило, интервалы времени будут небольшими и регулярными, что приводит к по большому количества точек анимации на сегмент. Однако в целях демонстрации предполагается, что вы запрашиваете ComputePointAndSegmentAtLength три раза с неравномерной длиной L1, L2, L3:Вы вызываете ComputePointAndSegmentAtLength(Length = L1, startSegment = 0). API возвращает следующее:
- D2D1_POINT_DESCRIPTION::p oint = P1.
- D2D1_POINT_DESCRIPTION::endSegment = 1 (сегмент BC).
- D2D1_POINT_DESCRIPTION::lengthToEndSegment = length (AB).
- D2D1_POINT_DESCRIPTION::p oint = P2.
- D2D1_POINT_DESCRIPTION::endSegment = 3 (сегмент DE).
- D2D1_POINT_DESCRIPTION::lengthToEndSegment = length (AD).
- D2D1_POINT_DESCRIPTION::p oint = P3.
- D2D1_POINT_DESCRIPTION::endSegment = 3 (сегмент DE).
- D2D1_POINT_DESCRIPTION::lengthToEndSegment =0.
Требования
Минимальная версия клиента | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 и обновление платформы для Windows Server 2008 R2 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | d2d1_1.h |
DLL | D2d1.dll |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по