Преобразования и элементы страницы

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

Дополнительные сведения о том, как использовать аффинные преобразования для достижения конкретных результатов, см. в руководстве «Формы размера и положения» .

Визуальный размер и положение элемента страницы контролируются двумя свойствами: size и Transform . Размер описывает идеальный или встроенный размер создаваемого элемента страницы. Преобразование определяет двумерную матрицу аффинного преобразования , которая определяет, как объект с его встроенным размером преобразуется для получения окончательного визуального вида.

Схема фигуры, визуализированной с помощью аффинного преобразования

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

Используйте интерфейс слайдов, чтобы начать работу

Матричная арифметика, которую вы используете для преобразования и изменения размера элементов страницы, очень эффективна, но поначалу может показаться сложной; большая часть этой страницы описывает эти расчеты. Однако вы можете упростить спецификацию преобразований и размеров, используя следующий подход:

  1. Создавайте элементы страницы с помощью пользовательского интерфейса Slides.
  2. Расположите эти элементы страницы по своему усмотрению, по-прежнему используя пользовательский интерфейс Slides.
  3. Прочтите размер и преобразуйте эти элементы, используя метод get.

Этого может быть достаточно, чтобы начать; В оставшейся части руководства объясняются вычисления преобразований, которые можно использовать для подробного управления элементами страницы.

Матрицы аффинного преобразования

Двумерные матрицы аффинного преобразования обычно используются графическими библиотеками для управления масштабом, вращением, сдвигом, отражением и перемещением элементов. В API Slides преобразование элемента страницы представлено в виде матрицы 3x3:

$$A=\begin{bmatrix} scale\_x & shear\_x & translate\_x\\ shear\_y & scale\_y & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

Параметры, используемые в преобразовании:

translate_x Параметры перевода определяют положение (X,Y) верхнего левого угла элемента страницы относительно верхнего левого угла страницы. Вы указываете относительное положение, используя единицы измерения: точки (pt) или английские метрические единицы (EMU).
translate_y
scale_x Параметры масштаба управляют размером элемента страницы при визуализации. Это безразмерные множители; например, значение scale_x , равное 1,5, увеличивает ширину элемента на 50%.
scale_y
shear_x Параметры сдвига также безразмерны и контролируют наклон элемента страницы. Параметры масштаба и сдвига можно использовать вместе для поворота элемента страницы.
shear_y

В Интернете можно найти множество примеров, показывающих , как матрицы двумерных преобразований влияют на рендеринг графических объектов.

Матрица преобразования относится к содержащей группе или странице элемента. Например, если вы поворачиваете группу, содержащую прямоугольник, значения поля transform группы отражают вращение, а значения поля transform прямоугольника — нет.

Расчет визуального размера

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

Отображение точки

Чтобы отобразить конкретную точку с помощью матрицы преобразования, преобразуйте точку (x, y) в вектор [x, y, 1], а затем выполните умножение матрицы. Рассмотрим отображение точки p :

\[p' = Ap\]

Это становится:

$$\begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix} =\begin{bmatrix} scale\_x & shear\_x & translate\_x\\ shear\_y & scale\_y & translate\_y\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix}$$

Следовательно, координаты новой точки p' таковы:

$$x' = (scale\_x \times x) + (shear\_x \times y) + translate\_x\\ y' = (scale\_y \times y) + (shear\_y \times x) + translate\_y$$

Расчет границы

Чтобы определить отображаемый размер ограничивающей рамки элемента после преобразования, которое сдвигает и масштабирует, используйте:

$$width' = (scale\_x \times width) + (shear\_x \times height)\\ height' = (scale\_y \times height) + (shear\_y \times width)$$

Дополнительные сведения о том, как использовать аффинные преобразования для достижения конкретных результатов, см. в руководстве «Формы размера и положения» .

Ограничения

Некоторые поля размера и положения несовместимы с некоторыми типами элементов страницы. В таблице ниже представлена ​​информация о совместимости определенных элементов страницы с полями размеров и расположения.

Поле Форма Видео Стол
Перевод
Шкала Нет**
сдвиг Нет Нет

** Чтобы обновить измерения строк и столбцов таблицы, используйте UpdateTableRowPropertiesRequest и UpdateTableColumnPropertiesRequest .

Все поля размера и положения могут дать неожиданные результаты, если элемент страницы имеет сдвиг. Все ограничения могут быть изменены. Актуальную информацию см. в разделе Google Slides API .