In diesem Leitfaden wird erläutert, wie Sie die Größe und Position von Seitenelementen mithilfe von affinen Transformationen mit der Google Slides API festlegen. Eine konzeptionelle Einführung in affine Transformationen finden Sie im Konzeptleitfaden Transformationen und Seitenelemente.
Elemente transformieren
Mit der Slides API können Sie Elemente auf einer Seite neu positionieren und skalieren. Dazu müssen Sie zuerst festlegen, welche Art von Transformation angewendet werden muss, und diese dann mit der
presentations.batchUpdate()
Methode anwenden, die ein oder mehrere
UpdatePageElementTransformRequest
Elemente enthält.
Transformationen können mit einem
ApplyMode vorgenommen werden:
ABSOLUTE-Transformationen ersetzen die vorhandene Transformationsmatrix des Elements. Alle Parameter, die Sie in der Transformationsaktualisierungsanfrage weglassen, werden auf null gesetzt.RELATIVE-Transformationen werden mit der vorhandenen Transformationsmatrix des Elements multipliziert (die Reihenfolge der Multiplikation ist wichtig):
Bei relativen Transformationen wird das Seitenelement von seiner aktuellen Position aus verschoben oder skaliert. Beispielsweise kann eine Form um 100 Punkte nach links verschoben oder um 40 Grad gedreht werden. Bei absoluten Transformationen werden vorhandene Positions- und Skalierungsinformationen verworfen. Beispielsweise kann eine Form in die Mitte der Seite verschoben oder auf eine bestimmte Breite skaliert werden.
Komplexe Transformationen können in der Regel als eine Folge einfacherer Transformationen ausgedrückt werden. Das Vorberechnen einer Transformation – das Kombinieren mehrerer Transformationen mithilfe der Matrixmultiplikation – kann oft den Aufwand reduzieren.
Für einige Vorgänge müssen Sie die vorhandenen Transformationsparameter eines Elements kennen. Wenn Sie diese Werte nicht haben, können Sie sie mit der
presentations.pages.get()
Methode abrufen.
Verschieben
Das Verschieben ist die Aktion, ein Seitenelement an eine neue Position auf derselben Seite zu bewegen. Bei absoluten Verschiebungen wird das Element an einen bestimmten Punkt verschoben, bei relativen Verschiebungen wird das Element um eine bestimmte Entfernung verschoben.
Eine grundlegende Transformationsmatrix für die Verschiebung hat die Form:
Wenn Sie mit einer
UpdatePageElementTransformRequest
ein Element verschieben möchten, ohne seine Größe, Scherung oder Ausrichtung zu ändern, können Sie eine der folgenden
AffineTransform
-Strukturen verwenden:
// 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' } }
Skalieren
Beim Skalieren wird ein Element entlang der X- oder Y-Achse gestreckt oder zusammengedrückt, um seine Größe zu ändern. Eine grundlegende Transformationsmatrix für die Skalierung hat die Form:
Sie können diese Matrixform direkt als RELATIVE-Transformation verwenden, um die Größe eines Elements zu ändern. Dies kann sich jedoch auch auf die gerenderte Scherung und Verschiebung des Elements auswirken.
Wenn Sie das Element skalieren möchten, ohne seine Scherung oder Verschiebung zu beeinflussen, wechseln Sie zum
Elementreferenzrahmen.
Rotation
Bei der Rotation wird ein Seitenelement um einen Punkt gedreht, wobei die Skalierungs- und Scherungsparameter verwendet werden. Die grundlegende Transformationsmatrix für die Rotation hat die folgende Form, wobei der Drehwinkel (in Radiant) von der X-Achse aus gegen den Uhrzeigersinn gemessen wird:
Wie beim Skalieren können Sie diese Matrixform direkt als RELATIVE-Transformation verwenden, um ein Element zu drehen. Dadurch wird das Element jedoch um den Ursprung der Seite gedreht. Wenn Sie das Element um seine Mitte oder einen anderen Punkt drehen möchten,
wechseln Sie zu diesem Elementreferenz
rahmen.
Spiegelung
Bei der Spiegelung wird ein Element an einer bestimmten Linie oder Achse gespiegelt. Die grundlegenden Transformationsmatrizen für die Spiegelung an der X- und Y-Achse haben die folgenden Formen:
Wie beim Skalieren können Sie diese Matrixform direkt als RELATIVE-Transformation verwenden, um ein Element zu spiegeln. Dadurch wird das Element jedoch auch verschoben. Wenn Sie
das Element ohne Verschiebung spiegeln möchten, wechseln Sie zum Elementreferenz
rahmen.
Elementreferenzrahmen
Wenn Sie eine grundlegende Skalierungs, Rotations- oder Spiegelungstransformation direkt auf ein Seiten element anwenden, wird eine Transformation im Referenzrahmen der Seite erzeugt. Bei einer grundlegenden Rotation wird das Element beispielsweise um den Ursprung der Seite (die obere linke Ecke) gedreht. Sie können jedoch im Referenzrahmen des Elements arbeiten, um ein Element beispielsweise um seinen Mittelpunkt zu drehen.
Wenn Sie ein Element in seinem eigenen Referenzrahmen transformieren möchten, schließen Sie es zwischen zwei anderen Verschiebungen ein: einer vorherigen Verschiebung T1, die den Mittelpunkt des Elements zum Ursprung der Seite bewegt, und einer nachfolgenden Verschiebung T2, die das Element wieder an seine ursprüngliche Position bewegt. Der gesamte Vorgang kann als Matrixprodukt ausgedrückt werden:
Sie können auch zu anderen Referenzrahmen wechseln, indem Sie stattdessen andere Punkte zum Ursprung verschieben. Diese Punkte werden zum Mittelpunkt des neuen Referenzrahmens.
Jede dieser Transformationen kann einzeln als sequenzielle RELATIVE-Transformationsanfrage ausgeführt werden. Idealerweise sollten Sie A'
oben mit Matrixmultiplikationen vorab berechnen und das Ergebnis als einzelne ABSOLUTE
Transformation anwenden. Alternativ können Sie das Produkt T2 * B * T1 vorab berechnen und als einzelne RELATIVE-Transformation anwenden. Beide sind in Bezug auf API-Vorgänge effizienter als das Senden der Transformationsanfragen einzeln.
Beschränkungen
Einige Felder für Größe und Position sind mit einigen Arten von Seitenelementen nicht kompatibel. In der folgenden Tabelle wird die Kompatibilität bestimmter Seitenelemente mit Feldern für Größe und Position zusammengefasst:
| Feld | Form | Video | Tabelle |
|---|---|---|---|
| Verschiebung | ✔ | ✔ | ✔ |
| Skalieren | ✔ | ✔ | Nein** |
| Scherung | ✔ | Nein | Nein |
Verwenden Sie
UpdateTableRowPropertiesRequest
und
UpdateTableColumnPropertiesRequest, um die Abmessungen von Tabellenzeilen und ‑spalten zu aktualisieren.
Alle Felder für Größe und Position können unerwartete Ergebnisse liefern, wenn das Seitenelement eine Scherung aufweist. Alle Beschränkungen können sich ändern. Aktuelle Informationen finden Sie unter Google Slides API.
Überarbeitete Werte
Wenn Sie ein Seitenelement erstellen, können Sie eine Größe und Transformation angeben, die ein bestimmtes visuelles Ergebnis liefern. Die Slides API kann jedoch die von Ihnen angegebenen Werte durch andere ersetzen, die dasselbe visuelle Erscheinungsbild erzeugen. Wenn Sie mit der API eine Größe festlegen, wird Ihnen im Allgemeinen nicht garantiert, dass Sie dieselbe Größe zurückerhalten. Sie sollten jedoch dieselben Ergebnisse erhalten, wenn Sie die Transformation berücksichtigen.