調整網頁元素大小和位置

本指南說明如何使用仿射變換來調整頁面元素的大小和位置。如要瞭解仿射變換的概念,請參閱「轉換」概念指南。

轉換元素

您可以使用 Slides API 重新調整及縮放頁面上的元素。如要執行這項操作,請先決定要套用的轉換類型,然後使用包含一或多個 UpdatePageElementTransformRequest 元素的 presentations.batchUpdate 方法套用該轉換。

您可以使用下列任一 applyModes 進行轉換:

  • ABSOLUTE 轉換會取代元素現有的轉換矩陣。您在轉換更新要求中省略的任何參數都會設為零。

  • RELATIVE 轉換會與元素現有的轉換矩陣相乘 (相乘順序很重要):

$$A' = BA$$

相對轉換會從目前位置移動或縮放頁面元素,例如將形狀向左移動 100 點,或旋轉 40 度。絕對轉換會捨棄現有的位置和縮放資訊,例如將形狀移至頁面中央,或將其縮放為特定寬度。

複雜的轉換通常可表示為一系列較簡單的轉換。預先計算轉換作業 (結合多個轉換,並使用矩陣相乘) 通常可降低額外負擔。

對於某些作業,您必須瞭解元素的現有轉換參數為何。如果沒有這些值,您可以使用 presentations.pages.get 要求擷取這些值。

翻譯

轉譯只是將網頁元素移至同一頁面上的新位置。絕對轉譯會將元素移至特定位置,而相對轉譯則會將元素移至特定距離。

基本平移轉換矩陣的格式如下:

$$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 轉換,藉此調整元素大小,但這也會影響元素的算繪剪切和平移。如要在不影響元素剪切或平移的情況下調整其大小,請切換至其參考座標系

旋轉

旋轉轉換會使用縮放和剪切參數,將頁面元素旋轉至某個點。基本旋轉轉換矩陣的形式如下,其中旋轉角度 (以弧度為單位) 是從 X 軸以逆時針方向移動時所測量:

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

與縮放一樣,您可以直接使用這個矩陣形式做為 RELATIVE 轉換,以旋轉元素,但這會導致元素以頁面的起點為基準旋轉。如要以元素的中心或其他點為基準旋轉元素,請切換至該參考座標架構

反思時間

反射會在特定線條或軸線上鏡射元素。基本的 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 轉換,以反映元素,但這會導致元素也進行轉譯。如要反射元素而無任何位移,請切換至其參考座標系

元素參考影格

直接將基本縮放反射旋轉轉換套用至網頁元素,即可在網頁的參考框架中產生轉換。舉例來說,基本旋轉會以網頁原點 (左上角) 為基準旋轉元素。不過,您可以使用元素本身的參考座標架構進行操作,例如將元素旋轉至其中心點。

如要在元素本身的參考架構中轉換元素,請將元素置於兩個其他轉譯之間:前一個轉譯 T1 會將元素中心移至頁面原點,後一個轉譯 T2 則會將元素移回原始位置。完整運算可表示為矩陣積:

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

您也可以改為將不同點轉換為原點,藉此切換至其他參考座標。這些點會成為新參考影格的中心。

您可以個別執行這些轉換作業,做為連續的 RELATIVE 轉換要求。理想情況下,您應使用矩陣相乘功能預先計算上述 A',並將結果套用為單一 ABSOLUTE 轉換。或者,您也可以預先計算 T2 * B * T1 乘積,並將其做為單一 RELATIVE 轉換套用。就 API 作業而言,這兩種方法都比個別傳送轉換要求更有效率。

限制

部分大小和位置欄位與某些類型的網頁元素不相容。下表列出特定網頁元素與大小和位置欄位的相容性。

欄位 圖案 影片 資料表
翻譯
擴充規模 否**
Shear

** 如要更新資料表的列和欄維度,請使用 UpdateTableRowPropertiesRequestUpdateTableColumnPropertiesRequest

如果網頁元素有剪切效果,所有大小和位置欄位都可能會產生意外結果。所有限制都可能隨時變更。如需最新資訊,請參閱 Google Slides API

Slides API 可能會重構您的值

建立網頁元素時,您可以指定尺寸和轉換,以提供特定視覺效果。不過,API 可能會將您提供的值替換為產生相同視覺效果的其他值。一般來說,如果您使用 API 寫入大小,系統不保證會傳回相同的大小。不過,如果您將轉換納入考量,應該會得到相同的結果。