Esistono due modi diversi per visualizzare e modificare le dimensioni e la posizione un elemento di pagina:
- Usare le sue funzioni getter e setter per le dimensioni e la posizione.
- Manipolare la trasformazione affine mediante le funzioni
getTransform()
esetTransform()
conservando la dimensione intrinseca.
Lettura delle proprietà degli elementi di pagina
Come mostrato in figura, le dimensioni e la posizione sono misurate rispetto alla riquadro di delimitazione di un elemento di pagina visualizzato quando non ha rotazione:
- A sinistra e In alto: misurate dall'angolo in alto a sinistra della pagina al
nell'angolo in alto a sinistra del riquadro di delimitazione non ruotato. Usa
getLeft()
egetTop()
per leggere i valori. - Larghezza e Altezza: la larghezza e l'altezza del riquadro di delimitazione non ruotato.
Utilizza
getWidth()
egetHeight()
per leggere i valori. - Rotazione: la rotazione in senso orario rispetto alla linea verticale che circonda
al centro del riquadro di delimitazione. Utilizza
getRotation()
per leggere il valore.
Tutte le lunghezze sono misurate in punti (pt). La rotazione è misurata in gradi (°).
Impostare le proprietà degli elementi di pagina
Puoi impostare le dimensioni e la posizione di un elemento della pagina quando lo crei utilizzando
un metodo di inserimento come insertShape()
. Per una forma esistente, puoi impostare
la dimensione, la posizione e la rotazione; Puoi anche impostare il ridimensionamento di un elemento
ridimensionarla o rifletterla lungo uno dei suoi bordi.
Al momento della creazione
Puoi fornire informazioni su posizione e dimensioni quando crei un elemento di pagina.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
Logger.log('Left: ' + shape.getLeft() + 'pt; Top: '
+ shape.getTop() + 'pt; Width: '
+ shape.getWidth() + 'pt; Height: '
+ shape.getHeight() + 'pt; Rotation: '
+ shape.getRotation() + ' degrees.');
Lo script riportato sopra crea una forma nella prima slide della presentazione attiva con la posizione e la dimensione specificate e legge le informazioni su posizione e dimensione della forma. Il log previsto è:
Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.
Dimensioni, posizione e rotazione
Puoi aggiornare le dimensioni e la posizione di un elemento della pagina dopo la creazione:
- Utilizza
setLeft()
esetTop()
per impostare la posizione dell'angolo in alto a sinistra della riquadro di delimitazione non ruotato. - Utilizza
setWidth()
esetHeight()
per impostare la larghezza e l'altezza visualizzata del limite . - Utilizza
setRotation()
per impostare la rotazione in senso orario del riquadro di delimitazione intorno al relativo Google Cloud.
Lo script seguente crea una forma nella prima slide della presentazione attiva: utilizza i setter per aggiornare posizione, dimensioni e rotazione, e legge la posizione e informazioni sulle dimensioni della forma.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setLeft(100).setTop(200).setWidth(50).setHeight(60).setRotation(90);
Logger.log('Left: ' + shape.getLeft()
+ 'pt; Top: ' + shape.getTop()
+ 'pt; Width: ' + shape.getWidth()
+ 'pt; Height: ' + shape.getHeight()
+ 'pt; Rotation: ' + shape.getRotation() + '\u00B0.');
L'output di log previsto da questo script è il seguente:
Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.
I setter di dimensioni, posizione e rotazione possono essere utilizzati in qualsiasi ordine o combinazione. La sostituzione della terza riga precedente con lo script seguente produrrà lo stesso risultato:
shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);
Scalabilità
Invece di utilizzare setWidth()
e setHeight()
sopra per impostare le dimensioni della forma
in un valore assoluto, scaleWidth()
e scaleHeight()
possono essere utilizzati per allungare o
comprimere un elemento di pagina con un fattore di scala relativo.
shape.scaleHeight(0.5).scaleWidth(2);
La figura seguente mostra come funziona il codice riportato sopra su una forma quadrata con rotazione di 45°. Tieni presente che l'angolo in alto a sinistra del riquadro di delimitazione è fisso durante il ridimensionamento.
Riflesso lungo il bordo
L'argomento in scaleWidth()
e scaleHeight()
può essere negativo in modo che possa
per capovolgere orizzontalmente o verticalmente un elemento di pagina.
shape.scaleWidth(-1); // Flip horizontally along the left edge of the bounding box.
shape.scaleHeight(-1); // Flip vertically along the top edge of the bounding box.
La figura seguente mostra come funziona il codice riportato sopra con una forma ruotata di 45°. Tieni presente che l'elemento della pagina sia capovolto lungo uno dei bordi del riquadro di delimitazione, ma al centro.
Rotazione delle linee
Come per altri elementi della pagina, la rotazione di una linea non corrisponde all'angolo verticale di
la linea, ma la rotazione del relativo riquadro di delimitazione. Quando crei una linea con
i punti di inizio e di fine specificati, la sua rotazione è sempre 0°. Trascinamento
anche i punti finali della linea nella UI di Presentazioni Google cambiano la loro angolazione verticale.
come dimensione e posizione del relativo riquadro di delimitazione, ma non cambia
la sua rotazione. L'utilizzo di setRotation()
ruota il riquadro di delimitazione della linea, che
cambia in modo efficace la sua angolazione verticale. Due linee possono quindi
hanno lo stesso angolo visivo verticale, ma riquadri di delimitazione diversi.
valori di dimensione, posizione e rotazione diversi.
Limitazioni
Alcuni metodi di dimensionamento e posizionamento non sono compatibili con alcuni tipi di pagine elementi. La tabella seguente riassume i metodi non compatibili con alcuni tipi di elementi della pagina.
Metodi | Shape | Video | Tabella |
---|---|---|---|
getHeight(), getWidth() | ✔ | ✔ | NO (restituisce null) |
setHeight(), setWidth() | ✔ | ✔ | NO |
setRotation() | ✔ | NO | NO |
scaleHeight(), scaleWidth() | ✔ | ✔ | NO |
Tutti i metodi di dimensionamento e posizionamento potrebbero restituire risultati imprevisti se la pagina presenta un taglio. Tutte le limitazioni sono soggette a modifica. Controlla riferimento per con informazioni aggiornate.
Utilizzo delle trasformazioni affine
Per il controllo avanzato, le dimensioni e la posizione di un elemento della pagina possono essere calcolata e regolata tramite la dimensione intrinseca (nativa) e la trasformazione affine.
Google Apps Script offre un'interfaccia simile per utilizzare la trasformazione affine dell'API Presentazioni Google.
- Per leggere,
article spiega
sui concetti della trasformazione affine e su come dedurre le dimensioni di cui è stato eseguito il rendering dalle
dimensioni (native) e trasformerai per gli elementi della pagina. In Apps Script, utilizza
getInherentWidth()
egetInherentHeight()
per le dimensioni native della pagina elementi;getTransform()
per la trasformazione affine degli elementi della pagina.
- Per scrivere,
article descrive
come ridimensionare e posizionare gli elementi della pagina utilizzando la trasformazione affine per ottenere
scalabilità, rotazione, riflesso e così via. In Apps Script, usa
setTransform()
per impostare la trasformazione affine degli elementi della pagina (simile a modalità ASSOLUTA);preconcatenateTransform()
per pre-concatenare una trasformazione affine nel trasformazione attuale degli elementi della pagina (simile alla modalità RELATIVA).
Lo script seguente crea una forma, imposta la sua trasformazione, ne legge la dimensione intrinseca e legge la sua trasformazione affine.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setTransform(SlidesApp.newAffineTransformBuilder()
.setScaleX(2)
.setScaleY(1)
.setTranslateX(100)
.setTranslateY(200)
.build());
Logger.log('Inherent width: ' + shape.getInherentWidth()
+ 'pt; Inherent height: '
+ shape.getInherentHeight() + 'pt.');
L'output di log previsto da questo script è il seguente:
Inherent width: 236.2pt; Inherent height: 236.2pt.
La forma risultante avrà le seguenti trasformazioni, dimensioni e posizione visualizzate:
AffineTransform{scaleX=2.0, scaleY=1.0, shearX=0.0, shearY=0.0, translateX=100.0, translateY=200.0}
Left: 100pt; Top: 200pt; Width: 472.4pt; Height: 236.2pt; Rotation: 0°.