本指南介绍如何使用仿射转换调整页面元素的大小和位置。如需了解仿射转换的概念性简介,请参阅转换概念指南。
转换元素
您可以通过幻灯片 API 调整页面上元素的位置和缩放比例。为此,请先确定需要应用哪种类型的转换,然后使用包含一个或多个 UpdatePageElementTransformRequest 元素的 presentations.batchUpdate 方法应用该转换。
可以通过以下两种 applyModes 之一进行转换:
ABSOLUTE
转换可替换元素的现有转换矩阵。您在转换更新请求中省略的所有参数都将设置为零。RELATIVE
转换会与相应元素的现有转换矩阵相乘(乘法顺序很重要):
相对转换会从页面元素当前所在位置移动或缩放页面元素;例如,将形状向左移动 100 点,或将其旋转 40 度。绝对转换会舍弃现有的位置和缩放比例信息;例如,将形状移动到页面的中心位置,或将形状缩放到特定宽度。
复杂的转换通常可以表示为一系列较简单的转换。预先计算转换(使用矩阵乘法结合多个转换)通常可以减少开销。
对于某些操作,您必须知道元素的现有转换参数是什么。如果您没有这些值,可以使用 presentations.pages.get 请求检索它们。
翻译
平移只是将页面元素移动到同一页面上的新位置的操作。绝对平移是将元素移动到特定点,而相对转换则是将元素移动特定距离。
基本转换转换矩阵的格式如下:
当您使用 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 维度拉伸或挤压元素以更改其大小。基本缩放转换矩阵的格式如下:
您可以直接将此矩阵形式用作 RELATIVE
转换来调整元素的大小,但这也会影响元素已渲染的剪切和平移。如需在不影响元素的剪切或平移的情况下缩放元素,请移至其参考边框。
Rotation
旋转转换使用缩放和剪切参数围绕一个点旋转页面元素。基本旋转转换矩阵的格式如下,其中旋转角度(以弧度为单位)是从 X 轴测量的,沿逆时针方向移动:
与缩放一样,您可以直接将此矩阵形式用作 RELATIVE
转换来旋转元素,但这会导致元素围绕网页的原点旋转。如需围绕元素中心或其他点旋转元素,请移至相应参考系。
反思
反射可在特定线条或轴上镜像元素。基本的 x 轴和 y 轴反射转换矩阵具有以下格式:
与缩放一样,您可以直接将此矩阵形式用作 RELATIVE
转换来反映元素,但这也会导致该元素平移。如需在不进行任何转换的情况下反射元素,请移至其参考边框。
元素参考边框
直接对页面元素应用基本的缩放、反射或旋转转换会在页面的参考边框中生成一个转换。例如,基本旋转会围绕页面的原点(左上角)旋转元素。不过,您可以在元素本身的参考系中进行操作,例如围绕元素的中心点旋转元素。
如需在元素自身的参考边框内转换某个元素,请将其括在两个其他转换之间:前一个转换 T1
用于将元素中心移到页面原点,而后面的转换 T2
用于将元素移回其原始位置。完整操作可以表示为矩阵乘积:
您也可以通过将不同的点转换为原点,来切换到其他参考坐标系。这些点将成为新参考边框的中心。
您可以采用连续的 RELATIVE
转换请求的形式分别执行所有这些转换。理想情况下,您应该使用矩阵乘法预计算上面的 A'
,并将结果作为单个 ABSOLUTE
转换应用。或者,预计算 T2 * B * T1
乘积,并将其作为单个 RELATIVE
转换进行应用。就 API 操作以及单独发送转换请求而言,这两种方法都更高效。
限制
某些大小和位置字段与某些类型的页面元素不兼容。下表总结了某些页面元素与尺寸和位置字段的兼容性。
字段 | 形状 | 视频 | 表 |
---|---|---|---|
翻译 | ✔ | ✔ | ✔ |
发展壮大 | ✔ | ✔ | 否** |
剪切 | ✔ | 否 | 否 |
** 如需更新表格的行维度和列维度,请使用 UpdateTableRowPropertiesRequest
和 UpdateTableColumnPropertiesRequest
。
如果页面元素有剪切,则所有尺寸和位置字段都可能会出现意外结果。所有限制随时可能更改。如需了解最新信息,请参阅 GoogleSlides API。
Slides API 可能会重构您的值
创建页面元素时,您可以指定提供特定视觉效果的大小和转换。不过,该 API 可能会将您提供的值替换为其他可产生相同视觉外观的值。一般来说,如果使用 API 写入大小,则不能保证返回相同的大小。但是,如果您将该转换考虑在内,那么应该得到相同的结果。