调整页面元素的大小和位置

本指南介绍了如何使用仿射功能确定页面元素的大小和位置 转换。有关仿射转换的概念性介绍, 请参阅转换概念指南。

转换元素

您可以通过幻灯片 API 调整页面上元素的位置和缩放比例。为此, 首先确定需要应用的转换类型,然后应用该转换 使用 presentations.batchUpdate 方法,其中包含一个或多个 UpdatePageElementTransformRequest 元素。

可以通过以下两种方法之一进行转换: applyModes:

  • ABSOLUTE 转换会替换元素的现有转换 模型。您在转换更新请求中省略的所有参数都会设置为 零。

  • RELATIVE 转换与元素的现有转换相乘 转换矩阵(乘法的顺序很重要):

$$A' = BA$$

相对转换可将页面元素从其当前所在位置移动或缩放; 例如,将形状向左移动 100 点,或将其旋转 40 度。 绝对转换会舍弃现有的位置和缩放比例信息;用于 例如,将某个形状移动到页面的中心位置,或将某个形状缩放为 特定宽度

复杂的转换通常可以表示为一系列较简单的转换。 预计算转换 - 使用 矩阵乘法,通常可以减少开销。

对于某些操作,您必须知道元素的现有转换 参数。如果没有这些值,您可以使用 presentations.pages.get 请求。

翻译

转换操作只是将页面元素移动到 同一网页。Absolute转换会将元素移动到特定点, 而相对转换则是将元素移动特定的距离。

基本平移转换矩阵的格式如下:

$$T=\begin{bmatrix} 1 & 0 & translate\_x\\ 0 & 1 & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

使用 UpdatePageElementTransformRequest 平移元素(而不改变元素的大小、剪切或方向), 可以使用下列其中一项 AffineTransform 结构:

// Absolute translation:
{
  'transform': {
    'scaleX':  current scaleX value,
    'scaleY':  current scaleY value,
    'shearX':  current shearX value,
    'shearY':  current shearY value,
    'translateX': X coordinate to move to,
    'translateY': Y coordinate to move to,
    'unit': 'EMU' // or 'PT'
  }
}

// Relative translation (scaling must also be provided to avoid a matrix multiplication error):
{
  'transform': {
    'scaleX':  1,
    'scaleY':  1,
    'translateX': X coordinate to move by,
    'translateY': Y coordinate to move by,
    'unit': 'EMU' // or 'PT'
  }
}

扩缩

缩放是沿着 X 轴和/或 y 轴尺寸以更改其大小。基本缩放转换矩阵的形式如下:

$$S=\begin{bmatrix} scale\_x & 0 & 0\\ 0 & scale\_y & 0\\ 0 & 0 & 1 \end{bmatrix}$$

您可以直接将此矩阵形式用作 RELATIVE 转换,以调整 但这也会影响元素呈现的剪切和平移。 要在不影响元素的剪切或平移的情况下缩放元素,请移至 参考边框

旋转

旋转转换利用缩放和 Shear 参数。基本旋转转换矩阵的格式如下: 其中旋转角度(以弧度为单位)是从 X 轴测量的,移动 逆时针:

$$R=\begin{bmatrix} cos(\theta) & sin(\theta) & 0\\ -sin(\theta) & cos(\theta) & 0\\ 0 & 0 & 1 \end{bmatrix}$$

与缩放一样,您可以直接将此矩阵形式用作 RELATIVE 使用 transform 属性来旋转元素,但是这会导致元素 网页的来源。要围绕元素中心或 不同点 转换到该参考系

反思

反射可在特定线条或轴上镜像元素。基本功能 x 轴和 y 轴反射转换矩阵具有以下形式:

$$F_x=\begin{bmatrix} 1 & 0 & 0\\ 0 & -1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}\qquad\qquad F_y=\begin{bmatrix} -1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}$$

与缩放一样,您可以直接将此矩阵形式用作 RELATIVE 转换来反映某个元素,但这会导致该元素转换为 。要在不进行任何翻译的情况下呈现相应元素 移动到其参考系

元素参考边框

应用基本的规模反射rotation 转换直接转换为页面 元素会在页面的参考边框中产生转换。例如: 基本旋转会将元素围绕网页原点(即 )。不过,您可以在 (例如,围绕元素中心点旋转元素)。

要在某个元素自身的参考边框内对其进行变形,请将该元素置于两个元素之间 其他转换:移动元素中心的前面翻译 T1 再到网页原点,以及移动元素的后续翻译 T2 还原为原来的位置完整操作可以用矩阵表示 产品:

$$A' = T2 \times B \times T1 \times A$$

您还可以通过平移不同点来切换到其他参考边框 改为发送到源站。这些点将成为新参考文件的中心 帧。

可以逐个执行上述转换,如下所示 依序 RELATIVE 转换请求。理想情况下,您应该预先计算 上面的 A' 包含矩阵乘法,并将结果作为单个结果应用 ABSOLUTE 转换。或者,预计算 T2 * B * T1 乘积 并将其作为单个 RELATIVE 转换应用。这两种方式都更加高效, 并单独发送转换请求。

限制

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

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

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

如果页面元素有剪切,则所有大小和定位字段都可能会出现意外结果。所有限制都可能会更改。如需了解最新信息,请参阅 Google Sheets API

该幻灯片 API 可能会重构您的值

创建页面元素时,您可以指定 以提供特定的视觉效果。不过,该 API 可能会取代您提供的 值与呈现相同视觉外观的其他值进行比较。一般来说,如果 使用 API 写入一个尺寸时 。不过,如果将转换转换为 。