Größe und Positionierung von Seitenelementen

In diesem Leitfaden wird beschrieben, wie Sie die Größe und Position von Seitenelementen mithilfe der Option „affine“ Transformationen. Für eine konzeptionelle Einführung in affine Transformationen finden Sie im Konzeptleitfaden zu Transformationen.

Elemente transformieren

Mit der Slides API können Sie Elemente auf einer Seite neu positionieren und skalieren. Gehen Sie dazu wie folgt vor: ermitteln, welche Art von Transformation angewendet werden muss, mit dem Parameter presentations.batchUpdate -Methode mit einem oder mehreren UpdatePageElementTransformRequest Elemente.

Transformationen können in einer von zwei applyModes:

  • ABSOLUTE-Transformationen ersetzen die vorhandene Transformation des Elements Matrixstruktur. Für alle Parameter, die Sie bei der Anfrage zur Transformationsaktualisierung weglassen, gilt Folgendes: Null.

  • RELATIVE-Transformationen werden mit den vorhandenen Transformationen des Elements multipliziert. Transformationsmatrix (die Reihenfolge der Multiplikation ist wichtig):

$$A' = BA$$

Relative Transformationen verschieben oder skalieren das Seitenelement von seiner aktuellen Position aus. indem Sie eine Form um 100 Punkte nach links verschieben oder sie um 40 Grad drehen. Absolute Transformationen verwerfen vorhandene Positions- und Skalierungsinformationen. für indem Sie eine Form in die Mitte der Seite verschieben oder sie auf eine Breite festgelegt.

Komplexe Transformationen können normalerweise als eine Abfolge einfacherer Transformationen ausgedrückt werden. Vorberechnung einer Transformation – Kombinieren mehrerer Transformationen mithilfe von Matrixmultiplikation – kann oft den Aufwand reduzieren.

Bei einigen Vorgängen müssen Sie wissen, was die vorhandene Transformation eines Elements ist. Parameter sind. Wenn Sie diese Werte nicht haben, können Sie sie mit einem presentations.pages.get

Übersetzung

Bei der Übersetzung wird einfach ein Seitenelement an eine neue Position dieselbe Seite zu finden. Bei Absoluten Übersetzungen wird das Element an einen bestimmten Punkt verschoben. Bei relativen Übersetzungen wird das Element um eine bestimmte Entfernung verschoben.

Eine einfache Translation-Transformationsmatrix hat folgende Form:

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

Wenn Sie ein UpdatePageElementTransformRequest ein Element zu übertragen, ohne seine Größe, Scherung oder Ausrichtung zu ändern, können Sie eines der folgenden Formate verwenden: AffineTransform Strukturen:

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

Skalierung

Bei Skalierung wird ein Element entlang des X und/oder Y-Dimension, um die Größe zu ändern. Eine einfache Skalierungstransformationsmatrix hat die Form:

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

Sie können diese Matrixform direkt als RELATIVE-Transformation verwenden, um die Größe eines -Elements. Dies kann jedoch auch die gerenderte Scherung und die Verschiebung des Elements beeinflussen. Um das Element zu skalieren, ohne seine Scherung oder Übersetzung zu beeinträchtigen, verschieben Sie Referenzrahmen.

Rotation

Rotationstransformationen drehen ein Seitenelement um einen Punkt, wobei die Skalierung und Scherungsparameter. Die grundlegende Rotationstransformationsmatrix hat die folgende Form: Hierbei wird der Drehwinkel (im Bogenmaß) von der X-Achse aus gemessen, wobei gegen den Uhrzeigersinn:

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

Wie bei der Skalierung können Sie diese Matrixform direkt als RELATIVE verwenden. Transformation, um ein Element zu drehen. Dies führt jedoch dazu, dass das Element gedreht wird. den Ursprung der Seite. Um das Element um seinen Mittelpunkt oder eine einen anderen Punkt, zu diesem Referenzframe wechseln.

Beurteilung

Bei der Reflexion wird ein Element entlang einer bestimmten Linie oder Achse gespiegelt. Die grundlegende Die Reflexionstransformationsmatrix für die X- und Y-Achse hat die folgenden Formen:

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

Wie bei der Skalierung können Sie diese Matrixform direkt als RELATIVE verwenden. -Transformation, um ein Element widerzuspiegeln. Dies führt jedoch dazu, dass das Element gut. Um das Element ohne Übersetzung widerzuspiegeln, Shift zum Referenzframe.

Referenzframes für Elemente

Wenn Sie eine einfache Skalierung anwenden, Reflexion oder rotation direkt auf eine Seite -Element erzeugt eine Transformation im Referenzframe der Seite. Beispiel: Bei einer einfachen Rotation wird das Element um den Ursprung der Seite gedreht (die in der oberen linken Ecke. Sie können jedoch im Bezugsrahmen des -Elements selbst, zum Beispiel, um ein Element um seinen Mittelpunkt zu drehen.

Um ein Element innerhalb seines eigenen Referenzframes zu transformieren, schließen Sie es zwischen zwei Frames ein andere Übersetzungen: eine vorherige Übersetzung T1, die die Elementmitte verschiebt an den Seitenursprung und eine folgende Übersetzungs-T2, mit der das Element verschoben wird in ihre ursprüngliche Position zurück. Die vollständige Operation kann als Matrix ausgedrückt werden Produkt:

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

Sie können auch zu anderen Referenzframes wechseln, indem Sie verschiedene Punkte übersetzen. an den Ursprung senden. Diese Punkte bilden den Mittelpunkt der neuen Referenz. Frame.

Es ist möglich, jede dieser Transformationen einzeln als sequenziellen RELATIVE-Transformationsanfragen. Idealerweise sollten Sie vorab berechnen, A' mit Matrixmultiplikationen und wendet das Ergebnis als ein einziges an ABSOLUTE-Transformation. Alternativ können Sie das T2 * B * T1-Produkt vorab berechnen und diese als einzelne RELATIVE-Transformation anwenden. Beides ist effizienter, in Bezug auf API-Vorgänge, und senden dann die Transformationsanfragen einzeln.

Beschränkungen

Einige Größen- und Positionierungsfelder sind mit einigen Seitentypen nicht kompatibel. Elemente. In der folgenden Tabelle ist die Kompatibilität bestimmter Seitenelemente mit den Feldern für Größenanpassung und Positionierung zusammengefasst.

Feld Form Video Tabelle
Translation
Scale Nein**
Scherung Nein Nein

** Um die Dimensionen für Tabellenzeilen und -spalten zu aktualisieren, UpdateTableRowPropertiesRequest und UpdateTableColumnPropertiesRequest.

Alle Größen- und Positionsfelder können zu unerwarteten Ergebnissen führen, wenn das Seitenelement eine Scherung aufweist. Alle Einschränkungen können sich ändern. Aktuelle Informationen finden Sie unter Google Slides API.

Die Slides API refaktoriert möglicherweise Ihre Werte

Wenn Sie ein Seitenelement erstellen, können Sie eine Größe angeben ein bestimmtes visuelles Ergebnis liefern. Die API kann jedoch die von Ihnen zur Verfügung gestellte mit anderen Werten, die das gleiche visuelle Erscheinungsbild liefern. Im Allgemeinen gilt: mit der API schreiben, können wir nicht garantieren, dass Größe. Sie sollten jedoch dieselben Ergebnisse erhalten, wenn Sie die Transformation in Konto.