转换和页面元素

本指南介绍了对页面元素进行转换(即移动、旋转、缩放和剪切)时使用的基本概念,尤其侧重于介绍底层仿射转换及其运算。

如需详细了解如何使用仿射转换来实现特定结果,请参阅设置形状的大小和位置指南。

页面元素的视觉尺寸和位置由 sizetransform 这两个属性控制。大小描述了所创建页面元素的理想大小或内置大小。转换会指定一个二维仿射转换矩阵,该矩阵会指定如何转换内置大小的对象以形成其最终的视觉外观。

通过仿射转换渲染的形状的示意图

当您在幻灯片界面中选择某个页面元素并使用调整手柄更改其视觉大小时,您实际上是在更新此转换矩阵。在页面上移动元素或旋转元素也会更新元素的转换矩阵。

通过幻灯片界面开始使用

用于转换页面元素和调整其大小的矩阵算法功能非常强大,但乍看起来可能令人望而却步;本页面的大部分内容都介绍了这些计算。不过,您可以采用以下方法简化转换和大小的指定:

  1. 使用幻灯片界面创建页面元素。
  2. 根据需要调整这些页面元素的位置和大小,并继续使用 Google 幻灯片界面。
  3. 使用 get 方法读取这些元素的大小和变形。

这足以帮助您入门;本指南的其余部分将详细介绍可用于操控页面元素的转换计算。

仿射转换矩阵

图形库通常使用二维仿射转换矩阵来控制元素的缩放、旋转、剪切、反射和平移。在幻灯片 API 中,页面元素的转换表示为一个 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 字段值不会反映旋转。

计算视觉尺寸

如需确定页面元素的视觉(呈现)尺寸,您必须将 size 和 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)$$

如需详细了解如何使用仿射转换来实现特定结果,请参阅设置形状的大小和位置指南。

限制

某些大小和位置字段与某些类型的页面元素不兼容。下表总结了某些页面元素与尺寸和位置字段的兼容性。

字段 形状 视频
翻译
发展壮大 否**
剪切

** 如需更新表格的行维度和列维度,请使用 UpdateTableRowPropertiesRequestUpdateTableColumnPropertiesRequest

如果页面元素有剪切,则所有尺寸和位置字段都可能会出现意外结果。所有限制随时可能更改。如需了解最新信息,请参阅 GoogleSlides API