Es gibt zwei Möglichkeiten, die Größe und Position ein Seitenelement:
- Getter- und Setter-Funktionen für Größe und Position verwenden
- Die affine Transformation mit den Funktionen
getTransform()
undsetTransform()
bearbeiten und dabei die inhärente Größe beibehalten
Seitenelementeigenschaften werden gelesen
Wie in der Abbildung dargestellt, werden Größe und Position in Bezug auf den Markierungsrahmen eines gerenderten Seitenelements, wenn es keine Rotation aufweist:
- Links und Oben: gemessen von der oberen linken Ecke der Seite bis zur
obere linke Ecke des nicht gedrehten Begrenzungsrahmens.
getLeft()
undgetTop()
für Folgendes verwenden: die Werte lesen. - Breite und Höhe: die Breite und Höhe des nicht gedrehten Begrenzungsrahmens
Verwenden Sie
getWidth()
undgetHeight()
, um die Werte zu lesen. - Drehung: die Drehung im Uhrzeigersinn, bezogen auf die vertikale Linie um
Mitte des Begrenzungsrahmens. Verwenden Sie
getRotation()
, um den Wert zu lesen.
Alle Längen werden in Punkten (pt) gemessen. Die Drehung wird in Grad gemessen. (°)
Seitenelementeigenschaften festlegen
Sie können die Größe und Position eines Seitenelements festlegen, wenn Sie es mit
und eine Einfügemethode wie insertShape()
. Für eine vorhandene Form können Sie Folgendes festlegen:
Größe, Position und Drehung, können Sie die Skalierung eines Elements
um es an einer seiner Ränder zu reflektieren.
Bei Erstellung
Sie können beim Erstellen eines Seitenelements Informationen zur Position und Größe angeben.
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.');
Mit dem obigen Skript wird auf der ersten Folie der aktiven Präsentation eine Form erstellt. mit der angegebenen Position und Größe und liest die Positions- und Größeninformationen der Form. Das erwartete Log lautet:
Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.
Größe, Position und Drehung
Sie können die Größe und Position eines Seitenelements nach dem Erstellen aktualisieren:
- Verwenden Sie
setLeft()
undsetTop()
, um die Position der oberen linken Ecke des nicht gedrehter Begrenzungsrahmen. - Mit
setWidth()
undsetHeight()
können Sie die Breite und Höhe der Begrenzung festlegen. . - Mit
setRotation()
können Sie die Drehung des Begrenzungsrahmens im Uhrzeigersinn um seinen in der Mitte.
Mit dem folgenden Skript wird auf der ersten Folie der aktiven Präsentation eine Form erstellt. verwendet Setter, um seine Position, Größe und Drehung zu aktualisieren, und liest die Position und Größeninformationen der Form.
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.');
Die erwartete Protokollausgabe von diesem Skript sieht wie folgt aus:
Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.
Die Festlegungen für Größe, Position und Drehung können in beliebiger Reihenfolge oder Kombination verwendet werden. Wenn Sie die dritte Zeile oben durch das folgende Skript ersetzen, erhalten Sie dasselbe Ergebnis:
shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);
Skalierung
Anstatt setWidth()
und setHeight()
oben zu verwenden, um die Größe der Form festzulegen
auf einen Absolutwert setzen, können scaleWidth()
und scaleHeight()
verwendet werden, um
ein Seitenelement mit einem relativen Skalierungsfaktor zusammendrücken.
shape.scaleHeight(0.5).scaleWidth(2);
Die folgende Abbildung zeigt, wie der obige Code bei einer um 45° gedrehten quadratischen Form funktioniert. Beachten Sie, dass die obere linke Ecke des Begrenzungsrahmens während der Skalierung unveränderlich bleibt.
Reflexion am Rand
Das Argument in scaleWidth()
und scaleHeight()
kann negativ sein, sodass
können Sie ein Seitenelement horizontal oder vertikal spiegeln.
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.
Die folgende Abbildung zeigt, wie der obige Code bei einer um 45° gedrehten Form funktioniert. Beachten Sie, dass wird das Seitenelement an einer der Ränder des Begrenzungsrahmens gedreht, aber nicht in dessen Mittelpunkt.
Linienrotation
Wie bei anderen Seitenelementen entspricht die Drehung einer Linie nicht dem vertikalen Winkel des
sondern die Drehung des Begrenzungsrahmens. Wenn Sie eine Linie mit
angegebenen Start- und Endpunkten liegt, ist die Drehung immer 0°. Ziehen
An den Endpunkten der Linie in der Benutzeroberfläche von Google Präsentationen ändert sich auch der vertikale Winkel.
als Größe und Position des Begrenzungsrahmens, ändert sich jedoch nicht
ihre Rotation. Mit setRotation()
wird der Begrenzungsrahmen der Linie gedreht, was
seinen vertikalen Winkel effektiv ändert. Zwei Zeilen können also
denselben vertikalen visuellen Winkel, aber unterschiedliche Begrenzungsrahmen.
Größen-, Positions- und Rotationswerten.
Beschränkungen
Einige Methoden zur Größenanpassung und Positionierung sind mit einigen Seitentypen nicht kompatibel. Elemente. In der folgenden Tabelle sind die Methoden aufgeführt, die nicht kompatibel mit bestimmte Arten von Seitenelementen.
Methoden | Form | Video | Tabelle |
---|---|---|---|
getHeight(), getWidth() | ✔ | ✔ | NO (gibt Null zurück) |
setHeight(), setWidth() | ✔ | ✔ | NEIN |
setRotation() | ✔ | NEIN | NEIN |
scaleHeight(), scaleWidth() | ✔ | ✔ | NEIN |
Alle Methoden zur Größenanpassung und Positionierung können zu unerwarteten Ergebnissen führen, wenn die Seite Element hat Scherung. Alle Einschränkungen können sich ändern. Referenz prüfen für aktuelle Informationen.
Affine Transformationen verwenden
Für eine erweiterte Steuerung können die Größe und Position eines Seitenelements auch werden über die inhärente (native) Größe und die affine Transformation berechnet und angepasst.
Google Apps Script bietet eine ähnliche Oberfläche zur Verwendung der affine Transformation wie die Google Slides API.
- Zu lesen:
Artikel erklärt
die Konzepte der affinen Transformation und wie die gerenderte Größe aus inhärenten
(native) Größe und Anpassung für Seitenelemente. Verwenden Sie in Apps Script
getInherentWidth()
undgetInherentHeight()
für die native Größe der Seite Elemente;getTransform()
für die affine Transformation der Seitenelemente
- Wenn Sie schreiben,
Artikel beschreibt
wie Sie die Größe und Position von Seitenelementen
mithilfe von affine Transformation
Skalierung, Drehung, Reflexion usw. verwenden. Verwenden Sie in Apps Script
setTransform()
, um die affine Transformation von Seitenelementen festzulegen (ähnlich ABSOLUTE-Modus);preconcatenateTransform()
, um eine affine Transformation in die aktuelle Umwandlung von Seitenelementen (ähnlich wie der RELATIVE Modus).
Das folgende Skript erstellt eine Form, legt ihre Transformation fest, liest ihre inhärente Größe und liest seine affine Transformation.
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.');
Die erwartete Protokollausgabe von diesem Skript sieht wie folgt aus:
Inherent width: 236.2pt; Inherent height: 236.2pt.
Die resultierende Form hat folgende Transformation sowie gerenderte Größe und Position:
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°.