Ridimensionamento e posizionamento degli elementi di pagina

Questa guida descrive come ridimensionare e posizionare gli elementi della pagina utilizzando l'affine e piccole trasformazioni. Per un'introduzione concettuale alle trasformazioni affine, consulta la guida ai concetti di trasformazione.

Trasformare gli elementi

L'API Presentazioni ti consente di riposizionare e ridimensionare gli elementi su una pagina. Per farlo, determinare prima il tipo di trasformazione da applicare e applicare e trasformerai utilizzando presentations.batchUpdate che contiene uno o più UpdatePageElementTransformRequest elementi.

Le trasformazioni possono essere effettuate in uno dei due applyModes:

  • ABSOLUTE trasforma sostituisce la trasformazione esistente dell'elemento . Gli eventuali parametri omessi dalla richiesta di aggiornamento della trasformazione sono impostati su zero.

  • Le trasformazioni RELATIVE vengono moltiplicate per l'elemento esistente dell'elemento matrice di trasformazione (l'ordine delle moltiplicazioni è importante):

$$A' = BA$$

Le trasformazioni relative spostano o ridimensionano l'elemento della pagina dalla posizione in cui si trova attualmente. ad esempio spostare una forma di 100 punti verso sinistra o ruotarla di 40 gradi. Le trasformazioni assolute ignorano le informazioni di posizione e scala esistenti; della ad esempio spostare una forma al centro della pagina o ridimensionarla e una larghezza specifica.

In genere, le trasformazioni complesse possono essere espresse come una sequenza di trasformazioni più semplici. Precalcolo di una trasformazione, combinando più trasformazioni utilizzando moltiplicazione della matrice: spesso possono ridurre i costi generali.

Per alcune operazioni, devi sapere quale trasformazione esistente di un elemento parametri. Se non hai questi valori, puoi recuperarli con una presentations.pages.get richiesta.

Traduzione

La traduzione è semplicemente l'azione di spostare un elemento di pagina in una nuova posizione la stessa pagina. Le traduzioni assolute spostano l'elemento in un punto specifico mentre le traduzioni relative spostano l'elemento di una distanza specifica.

Una matrice di trasformazione di base della traduzione ha il seguente formato:

$$T=\begin{bmatrix} 1 & 0 & translate\_x\\ 0 & 1 & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

Quando utilizzi una richiesta UpdatePageElementTransformRequest tradurre un elemento (senza modificarne le dimensioni, il taglio o l'orientamento), puoi utilizzare uno dei seguenti AffineTransform strutture:

// 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'
  }
}

Scalabilità

La scalabilità è l'azione di allungare o comprimere un elemento lungo la X e/o Dimensione Y per modificarne le dimensioni. Una matrice di trasformazione di scalabilità di base ha il seguente formato:

$$S=\begin{bmatrix} scale\_x & 0 & 0\\ 0 & scale\_y & 0\\ 0 & 0 & 1 \end{bmatrix}$$

Puoi utilizzare questo modulo matrice direttamente come una trasformazione RELATIVE per ridimensionare un ma questo può influire anche sul taglio e sulla traslazione visualizzati dell'elemento. Per scalare l'elemento senza influenzarne il taglio o la traslazione, passa alla sua un framework di riferimento.

Rotazione

La rotazione trasforma la rotazione di un elemento di pagina attorno a un punto, utilizzando le proporzioni e di taglio. La matrice di trasformazione della rotazione base ha il seguente formato: dove l'angolo di rotazione (in radianti) viene misurato dall'asse X, spostandosi senso antiorario:

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

Come per la scalabilità, puoi utilizzare questa matrice direttamente come RELATIVE trasforma per ruotare un elemento, che però ne comporta la rotazione sull'origine della pagina. Per ruotare l'elemento rispetto al centro o a uno punto diverso, passa al frame di riferimento.

Riflessione

La riflessione riflette un elemento su una linea o un asse specifici. Le basi La matrice di trasformazione della riflessione degli assi x e y ha le seguenti forme:

$$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}$$

Come per la scalabilità, puoi utilizzare questa matrice direttamente come RELATIVE trasforma l'elemento in modo da riflettere un elemento, ma in questo modo beh. Per riflettere l'elemento senza alcuna traduzione, al suo frame di riferimento.

Frame di riferimento degli elementi

Applicazione di una scala di base, riflesso o la rotazione trasformata direttamente in una pagina produce una trasformazione nel frame di riferimento della pagina. Ad esempio: una rotazione di base fa ruotare l'elemento rispetto all'origine della pagina ( nell'angolo in alto a sinistra). Tuttavia, puoi operare nel sistema di riferimento della dell'elemento stesso, ad esempio per ruotare un elemento attorno al suo punto centrale.

Per trasformare un elemento all'interno del suo quadro di riferimento, racchiudilo tra due altre traduzioni: una traduzione precedente T1 che sposta il centro dell'elemento all'origine della pagina e una traduzione T2 successiva che sposta l'elemento alla posizione originale. L'operazione completa può essere espressa come una matrice prodotto:

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

Puoi anche passare ad altri sistemi di riferimento traducendo i vari punti all'origine. Questi punti diventano il centro del nuovo riferimento frame.

È possibile eseguire ciascuna di queste trasformazioni singolarmente richieste di trasformazione RELATIVE sequenziali. Idealmente, dovresti precalcolare A' in alto con moltiplicazioni matriciali e applica il risultato come un singolo Trasformazione ABSOLUTE. In alternativa, precalcola il prodotto T2 * B * T1 e applicarla come singola trasformazione RELATIVE. Entrambe sono più efficienti, in termini di operazioni API, quindi inviando le richieste di trasformazione singolarmente.

Limitazioni

Alcuni campi relativi a dimensioni e posizionamento non sono compatibili con alcuni tipi di pagina elementi. La tabella riportata di seguito riassume la compatibilità di alcuni elementi della pagina con i campi relativi alle dimensioni e al posizionamento.

Campo Shape Video Tabella
Traduzioni
Scala No**
Taglio No No

** Per aggiornare le dimensioni di righe e colonne in una tabella, utilizza UpdateTableRowPropertiesRequest e UpdateTableColumnPropertiesRequest.

Tutti i campi relativi a dimensioni e posizionamento potrebbero restituire risultati imprevisti se l'elemento della pagina presenta un taglio. Tutte le limitazioni sono soggette a modifica. Per informazioni aggiornate, vedi API Presentazioni Google.

L'API Presentazioni potrebbe eseguire il refactoring dei valori

Quando crei un elemento di pagina, puoi specificare una dimensione e trasformarla fornire un determinato risultato visivo. Tuttavia, l'API potrebbe sostituire le informazioni che hai fornito e altri che danno lo stesso aspetto visivo. In generale, se scrivi una dimensione utilizzando l'API, non è garantito che ti venga restituita dimensioni. Tuttavia, dovresti ottenere gli stessi risultati utilizzando la trasformazione .