In diesem Leitfaden wird erläutert, wie Sie Seitenelemente mithilfe von affinen Transformationen mit der Google Präsentationen API skalieren und positionieren. Eine konzeptionelle Einführung in affine Transformationen finden Sie im Konzeptleitfaden Transformationen und Seitenelemente.
Elemente transformieren
Mit der Präsentationen 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. Sie können beispielsweise eine Form um 100 Punkte nach links verschieben oder um 40 Grad drehen. Bei absoluten Transformationen werden vorhandene Positions- und Skalierungsinformationen verworfen. Sie können beispielsweise eine Form in die Mitte der Seite verschieben oder sie auf eine bestimmte Breite skalieren.
Komplexe Transformationen können in der Regel als eine Sequenz einfacherer Transformationen ausgedrückt werden. Durch die Vorberechnung einer Transformation – die Kombination mehrerer Transformationen mithilfe der Matrixmultiplikation – kann der Aufwand oft reduziert werden.
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 bewegt, bei relativen Verschiebungen wird es um eine bestimmte Entfernung verschoben.
Eine grundlegende Transformationsmatrix für die Verschiebung hat die folgende 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 folgende Form:
Sie können diese Matrixform direkt als RELATIVE-Transformation verwenden, um die Größe eines Elements anzupassen. 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.
Drehen
Bei der Drehungstransformation wird ein Seitenelement um einen Punkt gedreht, wobei die Skalierungs- und Scherungsparameter verwendet werden. Die grundlegende Transformationsmatrix für die Drehung hat die folgende Form, wobei der Drehwinkel (in Bogenmaß) 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 seinen Mittelpunkt oder einen anderen Punkt drehen möchten,
wechseln Sie zu diesem Elementreferenz
rahmen.
Spiegeln
Beim Spiegeln wird ein Element an einer bestimmten Linie oder Achse gespiegelt. Die grundlegende Transformationsmatrix für die Spiegelung an der X- und Y-Achse hat 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 Elementreferenzrahmen.
Elementreferenzrahmen
Wenn Sie eine grundlegende Skalierungs, Drehungs oder Spiegelungstransformation direkt auf ein Seiten element anwenden, wird eine Transformation im Referenzrahmen der Seite erzeugt. Bei einer grundlegenden Drehung wird das Element beispielsweise um den Ursprung der Seite (die obere linke Ecke) gedreht. Sie können jedoch auch 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 vorberechnen und das Ergebnis als einzelne ABSOLUTE
Transformation anwenden. Alternativ können Sie das Produkt T2 * B * T1 vorberechnen 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 bestimmten 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 |
|---|---|---|---|
| Verschieben | ✔ | ✔ | ✔ |
| 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 Präsentationen API.
Überarbeitete Werte
Wenn Sie ein Seitenelement erstellen, können Sie eine Größe und Transformation angeben, die ein bestimmtes visuelles Ergebnis liefern. Die Präsentationen API kann die von Ihnen angegebenen Werte jedoch durch andere ersetzen, die dasselbe visuelle Erscheinungsbild erzeugen. Wenn Sie mit der API eine Größe angeben, erhalten Sie in der Regel nicht dieselbe Größe zurück. Sie sollten jedoch dieselben Ergebnisse erhalten, wenn Sie die Transformation berücksichtigen.