本指南說明如何使用仿射變換來調整頁面元素的大小和位置。如要瞭解仿射變換的概念,請參閱「轉換」概念指南。
轉換元素
您可以使用 Slides 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
轉換,藉此調整元素大小,但這也會影響元素的算繪剪切和平移。如要在不影響元素剪切或平移的情況下調整其大小,請切換至其參考座標系。
旋轉
旋轉轉換會使用縮放和剪切參數,將頁面元素旋轉至某個點。基本旋轉轉換矩陣的形式如下,其中旋轉角度 (以弧度為單位) 是從 X 軸以逆時針方向移動時所測量:
與縮放一樣,您可以直接使用這個矩陣表單做為 RELATIVE
轉換,以旋轉元素,但這會導致元素以頁面的起點為基準旋轉。如要以元素的中心或其他點為基準旋轉元素,請切換至該參考座標架構。
反思時間
反射會在特定線條或軸線上鏡射元素。基本的 x 軸和 y 軸反射轉換矩陣有以下形式:
如同縮放,您可以直接使用這個矩陣表單做為 RELATIVE
轉換,以反映元素,但這會導致元素也要進行轉譯。如要反射元素而無任何位移,請切換至其參考座標系。
元素參考影格
直接將基本縮放、反射或旋轉轉換套用至網頁元素,即可在網頁的參考框架中產生轉換。舉例來說,基本旋轉功能會以網頁原點 (左上角) 為基準旋轉元素。不過,您可以使用元素本身的參考座標架構進行操作,例如將元素旋轉至其中心點。
如要在元素本身的參考架構中轉換元素,請將元素包夾在兩個其他轉譯之間:前一個轉譯 T1
會將元素中心移至頁面原點,後一個轉譯 T2
則會將元素移回原始位置。完整運算可表示為矩陣積:
您也可以改為將不同點轉換為原點,藉此切換至其他參考座標。這些點會成為新參考影格的中心。
您可以個別執行這些轉換作業,做為連續 RELATIVE
轉換要求。理想情況下,您應使用矩陣相乘功能預先計算上述 A'
,並將結果套用為單一 ABSOLUTE
轉換。或者,您也可以預先計算 T2 * B * T1
乘積,並將其做為單一 RELATIVE
轉換套用。就 API 作業而言,這兩種方法都比個別傳送轉換要求更有效率。
限制
部分大小和位置欄位與某些類型的網頁元素不相容。下表列出特定網頁元素與大小和位置欄位的相容性。
欄位 | 圖案 | 影片 | 資料表 |
---|---|---|---|
翻譯 | ✔ | ✔ | ✔ |
擴充規模 | ✔ | ✔ | 否** |
Shear | ✔ | 否 | 否 |
** 如要更新資料表的列和欄維度,請使用 UpdateTableRowPropertiesRequest
和 UpdateTableColumnPropertiesRequest
。
如果網頁元素有剪切效果,所有大小和位置欄位都可能會產生不預期的結果。所有限制都可能有所變動。如需最新資訊,請參閱 Google Slides API。
Slides API 可能會重構您的值
建立網頁元素時,您可以指定尺寸和轉換,以提供特定視覺效果。不過,API 可能會將您提供的值替換為產生相同視覺效果的其他值。一般來說,如果您使用 API 寫入大小,系統不保證會傳回相同的大小。不過,如果您將轉換納入考量,應該會得到相同的結果。