Как узнать координаты повернутого текстового кадра - PullRequest
1 голос
/ 07 июня 2010

С помощью (idml) itemtransform горизонтальных / вертикальных расстояний и массивов точек пути я могу узнать координаты текстового фрейма (x1, y1), (x2, y2), (x3, y3), (x4, y4). Если текстовый фрейм поворачивается, то значения преобразования элемента изменяются, но значения массива точек пути совпадают. Я могу найти угол поворота по матрице [cos (θ) sin (θ) -sin (θ) cos (θ) 0 0]), но я не смог получить точные координаты повернутого текстового кадра. Текстовые рамки приведены ниже.

Обычный текстовый фрейм

  <TextFrame Self="u136" ParentStory="u124" ItemTransform="1 0 0 1 101.72727272727272 -349.41818181818184">
        <Properties>
            <PathGeometry>
                <GeometryPathType PathOpen="false">
                    <PathPointArray>
                        <PathPointType Anchor="-101.72727272727272 -46.581818181818164" LeftDirection="-101.72727272727272 -46.581818181818164" RightDirection="-101.72727272727272 -46.581818181818164"/>
                        <PathPointType Anchor="-101.72727272727272 -0.3272727272727103" LeftDirection="-101.72727272727272 -0.3272727272727103" RightDirection="-101.72727272727272 -0.3272727272727103"/>
                        <PathPointType Anchor="115.9090909090909 -0.3272727272727103" LeftDirection="115.9090909090909 -0.3272727272727103" RightDirection="115.9090909090909 -0.3272727272727103"/>
                        <PathPointType Anchor="115.9090909090909 -46.581818181818164" LeftDirection="115.9090909090909 -46.581818181818164" RightDirection="115.9090909090909 -46.581818181818164"/>
                    </PathPointArray>
                </GeometryPathType>
            </PathGeometry>
        </Properties>         

Повернутый текстовый фрейм

 <TextFrame Self="u136" ParentStory="u124" ItemTransform="0 1 -1 0 320.3805483338268 -125.07900895050204">
        <Properties>
            <PathGeometry>
                <GeometryPathType PathOpen="false">
                    <PathPointArray>
                        <PathPointType Anchor="-101.72727272727272 -46.581818181818164" LeftDirection="-101.72727272727272 -46.581818181818164" RightDirection="-101.72727272727272 -46.581818181818164"/>
                        <PathPointType Anchor="-101.72727272727272 -0.3272727272727103" LeftDirection="-101.72727272727272 -0.3272727272727103" RightDirection="-101.72727272727272 -0.3272727272727103"/>
                        <PathPointType Anchor="115.9090909090909 -0.3272727272727103" LeftDirection="115.9090909090909 -0.3272727272727103" RightDirection="115.9090909090909 -0.3272727272727103"/>
                        <PathPointType Anchor="115.9090909090909 -46.581818181818164" LeftDirection="115.9090909090909 -46.581818181818164" RightDirection="115.9090909090909 -46.581818181818164"/>
                    </PathPointArray>
                </GeometryPathType>
            </PathGeometry>
        </Properties>        

Когда я преобразовал значения повернутого текстового фрейма в координаты и нарисовал его на экране, тогда я не получил точную позицию, в которой он нарисован в оригинале.

Может ли кто-нибудь помочь мне выяснить корнины повернутого текстового фрейма.

Заранее спасибо.

1 Ответ

0 голосов
/ 30 ноября 2010

Значения в свойстве ItemTransform TextFrame (a b c d e f) представляют собой матрицу преобразования 2D-пространства для преобразования из внутренней системы координат TextFrame обратно в родительскую систему координат в соответствии со следующей формулой умножения матрицы:

| Xparent |   | a  c  e |   | X |
| Yparent | = | b  d  f | * | Y |
| 1       |   | 0  0  1 |   | 1 |

Где X, Y - координаты внутренней системы координат TextFrame, а Xparent и Yparent - соответствующие координаты в родительской (Spread и т. Д.) Системе координат.

Для получения дополнительной информации см. 7 Системы координат, преобразования и единицы

...