調整網頁元素大小和位置

本指南說明如何使用輔助轉換設定頁面元素的大小和位置。如需肯定轉換的概念簡介,請參閱 Transforms 概念指南。

轉換元素

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 轉換來反映元素,但這也會導致元素一併轉譯。如要在沒有翻譯的情況下反映元素,請切換至參考框架

元素參照框架

將基本的 scaleRelectionrotation 轉換直接套用至頁面元素,即可在頁面參考框架中產生轉換。舉例來說,基本旋轉角度會根據頁面起點 (左上角) 旋轉元素,不過,您可以在元素本身的參考畫面中操作,例如讓元素圍繞其中心點旋轉。

如要在其參照頁框中轉換元素,請在兩個其他翻譯之間加入元素:上一個翻譯 T1 (會將元素中心移至頁面來源),以及下列轉譯 T2 (可將元素移回原始位置)。完整運算可以是矩陣產品:

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

您也可以切換至其他參考框架,改為將不同的點轉譯為原點。這些點會成為新參考畫面的中心。

您可以依序執行這些轉換,做為連續的 RELATIVE 轉換要求。在理想情況下,您應使用矩陣乘法預先運算上述 A',然後將結果套用為單一 ABSOLUTE 轉換。或者,您也可以預先運算 T2 * B * T1 產品,並將其套用為單一 RELATIVE 轉換。以 API 作業來說,這些方法會更有效率,然後再個別傳送轉換要求。

限制

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

欄位 形狀 影片 資料表
Translation
擴充規模 否**
耳朵

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

如果網頁元素有變色,所有大小和定位欄位都可能會產生非預期的結果。所有限制都可能會變動。如需最新資訊,請參閱 Google Slides API

Slides API 可能會重構您的值

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