Поделиться через


Метод 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.

Если длина превышает общую длину пути, возвращается конечная точка пути.

Пример иллюстрации

Рассмотрим этот пример, объясняющий значение различных параметров, возвращаемых для заданной геометрии пути. Схема геометрии пути и его длины. Ниже приведены два разных сценария.

Вы хотите получить сегмент с длиной L2

Вы вызываете ComputePointAndSegmentAtLength(Length = L2, startSegment =0). API возвращает следующее:

Вы хотите повысить производительность вычисления точки заданной длины для анимации по пути

Как правило, интервалы времени будут небольшими и регулярными, что приводит к по большому количества точек анимации на сегмент. Однако в целях демонстрации предполагается, что вы запрашиваете ComputePointAndSegmentAtLength три раза с неравномерной длиной L1, L2, L3:

Вы вызываете ComputePointAndSegmentAtLength(Length = L1, startSegment = 0). API возвращает следующее:

Вы вызываете ComputePointAndSegmentAtLength(Length = L2 - Length(AB), startSegment = 1). API возвращает следующее: Вы вызываете ComputePointAndSegmentAtLength(= L3-length(AB)-length(BD), startSegment = 3. API возвращает следующее:

Требования

   
Минимальная версия клиента Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 и обновление платформы для Windows Server 2008 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header d2d1_1.h
DLL D2d1.dll

См. также раздел

D2D1_MATRIX_3X2_F

D2D1_POINT_2F

D2D1_POINT_DESCRIPTION

ID2D1PathGeometry

ID2D1PathGeometry1