IDML: Как формы хранятся в файлах IDML?

Я столкнулся с несколькими формами при чтении спредов IDML. Каждая форма имеет свою собственную геометрию, которая выглядит как -

-<PathGeometry> 
   -<GeometryPathType PathOpen="false"> 
      -<PathPointArray> 
          <PathPointType RightDirection="-611.5 1548.5" LeftDirection="-611.5 1548.5" Anchor="-611.5 1548.5"/> 
          <PathPointType RightDirection="-611.5 2339.5" LeftDirection="-611.5 2339.5" Anchor="-611.5 2339.5"/>
          <PathPointType RightDirection="-533.3 2339.5" LeftDirection="-533.3 2339.5" Anchor="-533.3 2339.5"/> 
          <PathPointType RightDirection="-533.3 1548.5" LeftDirection="-533.3 1548.5" Anchor="-533.3 1548.5"/> 
       </PathPointArray> 
   </GeometryPathType>
 </PathGeometry>

Для прямоугольников это тривиально (как в примере выше), где каждый атрибут в <PathPoint> элемент указывает на конечную точку в прямоугольнике. Что происходит с другими формами? Другими словами, что означают атрибуты RightDirection, LeftDirection и Anchor? Есть ли способ определить, какую форму он смотрит на PathPointArray?

Благодарю.

1 ответ

Решение

Каждый IDML PathPointType является узлом на кубической кривой Безье. Комбинация контрольных и опорных точек определяет конечные точки и кривизну линии. Все линии в IDML определены как кривые, но, как вы заметили, контрольная и опорная точки для прямой линии идентичны. Прямые многоугольники (например, треугольник) определяются одинаково.

IDML имеет лишь небольшую коллекцию типов фигур (прямоугольники, эллипсы, графические линии, многоугольники - см. 10.3.1 в спецификации). Вы можете нарисовать любую фигуру из IDML, просто нарисовав ее по одной линии за раз, но более эффективно создавать отдельные процедуры для прямоугольников и эллипсов.

Обратите внимание также PathOpen="false" на GeometryPathType элемент. Для эффективности последняя линия в форме не определена - вы создадите линию от конечной точки до первой, если PathOpen == ложь

Другие вопросы по тегам