調整網頁元素大小和位置

本指南說明如何使用興趣相似目標對象轉換,調整頁面元素的大小和位置。如需仿射轉換的概念簡介,請參閱轉換概念指南。

轉換元素

簡報 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 作業來說,兩者的效率較高,然後再個別傳送轉換要求。

限制

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

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

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

如果網頁元素含有分散效果,所有大小和位置欄位都可能造成非預期的結果。所有限制隨時可能變動。如需最新資訊,請參閱 Google 簡報 API

deck API 可能會重構您的值

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