本指南介绍了如何使用 Google 幻灯片 API 通过仿射转换来调整页面元素的大小和位置。如需从概念上了解仿射 转换,请参阅转换和页面元素 概念指南。
转换元素
借助幻灯片 API,您可以重新定位页面上的元素并调整其大小。为此,请先确定需要应用哪种转换,然后使用
presentations.batchUpdate()
方法应用该转换,该方法包含一个或多个
UpdatePageElementTransformRequest
元素。
可以使用
ApplyMode进行转换:
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 转换来调整元素的大小,但这也会影响元素的渲染剪切和平移。如需缩放元素而不影响其剪切或平移,请切换到其
元素参考框架。
旋转
旋转转换使用缩放和剪切参数围绕某个点旋转页面元素。基本旋转转换矩阵的格式如下,其中旋转角度(以弧度为单位)是从 X 轴开始逆时针测量的:
与缩放一样,您可以直接将此矩阵形式用作 RELATIVE 转换来旋转元素,但这会导致元素围绕页面的原点旋转。 如需围绕元素的中心或其他点旋转元素,
请切换到该元素参考
框架。
反射
反射是指将元素镜像到特定直线或轴上。基本 x 轴和 y 轴反射转换矩阵的格式如下:
与缩放一样,您可以直接将此矩阵形式用作 RELATIVE 转换来反射元素,但这会导致元素也发生平移。如需
反射元素而不进行任何平移,请切换到其元素参考
框架。
元素参考框架
直接对页面元素应用基本缩放、 旋转或 反射转换会在页面的参考框架中产生转换。例如,基本旋转会围绕页面的原点(左上角)旋转元素。不过,您可以在元素的参考框架中进行操作,例如围绕元素的中心点旋转元素。
如需在元素自己的参考框架内转换元素,请将其括在两个其他平移之间:一个在前的平移 T1,用于将元素中心移动到页面原点;一个在后的平移
T2,用于将元素移回其原始位置。完整操作可以表示为矩阵乘积:
您还可以通过将不同的点平移到原点来切换到其他参考框架。这些点将成为新参考框架的中心。
您可以将每个转换单独作为连续的 RELATIVE 转换请求执行。理想情况下,您应该使用矩阵乘法预先计算上述 A' ,并将结果作为单个 ABSOLUTE 转换应用。或者,预先计算 T2 * B * T1 乘积,并将其作为单个 RELATIVE
转换应用。与单独发送转换请求相比,这两种方法在 API 操作方面都更高效。
限制
某些大小调整和定位字段与某些类型的页面元素不兼容。下表总结了某些页面元素与大小调整和定位字段的兼容性:
| 字段 | 形状 | 视频 | 表格 |
|---|---|---|---|
| 平移 | ✔ | ✔ | ✔ |
| 缩放 | ✔ | ✔ | 否** |
| 剪切 | ✔ | 否 | 否 |
如需更新表格行和列的尺寸,请使用
UpdateTableRowPropertiesRequest
和
UpdateTableColumnPropertiesRequest。
如果页面元素有剪切,所有大小调整和定位字段都可能会给出意外结果。所有限制都可能会发生变化。如需了解最新 信息,请参阅 Google 幻灯片 API。
重构的值
创建页面元素时,您可以指定提供特定视觉结果的大小和转换。不过,幻灯片 API 可能会将您提供的值替换为产生相同视觉效果的其他值。一般来说,如果您使用 API 写入大小,则无法保证返回相同的大小。不过,如果您考虑转换,则应该会得到相同的结果。