Dimensionnement et positionnement des éléments d'une page

Ce guide explique comment dimensionner et positionner les éléments de page à l'aide de la méthode affine de transformation. Pour une introduction conceptuelle aux transformations affines, consultez le guide conceptuel Transformations.

Transformer des éléments

L'API Slides vous permet de repositionner et de mettre à l'échelle des éléments sur une page. Pour ce faire, déterminez d'abord le type de transformation à appliquer, à l'aide de la commande presentations.batchUpdate contenant une ou plusieurs UpdatePageElementTransformRequest éléments.

Les transformations peuvent être effectuées dans l'une applyModes:

  • Les transformations ABSOLUTE remplacent la transformation existante de l'élément matricielle. Tous les paramètres que vous omettez dans la requête de mise à jour de transformation sont définis sur zéro.

  • Les transformations RELATIVE sont multipliées avec la valeur existante de l'élément matrice de transformation (l'ordre de multiplication est important):

$$A' = BA$$

Les transformations relatives déplacent ou mettent à l'échelle l'élément de page à partir de son emplacement actuel. (par exemple, en déplaçant une forme de 100 points vers la gauche ou en la faisant pivoter de 40 degrés). Les transformations absolues suppriment les informations de position et d'échelle existantes. pour Par exemple, vous pouvez déplacer une forme vers le centre de la page ou la mettre à l'échelle une largeur spécifique.

Les transformations complexes peuvent généralement être exprimées sous la forme d'une séquence de transformations complexes. Précalcul d'une transformation (combinaison de plusieurs transformations à l'aide de la multiplication matricielle peut souvent réduire les frais généraux.

Pour certaines opérations, vous devez savoir quelle est la transformation paramètres. Si vous ne disposez pas de ces valeurs, vous pouvez les récupérer à l'aide d'un presentations.pages.get requête.

Traduction

La traduction désigne simplement l'action consistant à déplacer un élément de la page vers une nouvelle position sur la même page. Les traductions absolues déplacent l'élément vers un point spécifique, tandis que les traductions relatives déplacent l'élément d'une distance spécifique.

Une matrice de transformation de traduction de base se présente comme suit:

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

Lorsque vous utilisez une requête UpdatePageElementTransformRequest pour traduire un élément (sans modifier sa taille, son cisaillement ni son orientation), vous utiliser l'un des éléments suivants : AffineTransform structures:

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

Scaling

La mise à l'échelle est l'action d'étirer ou de presser un élément le long du X et/ou pour modifier sa taille. Une matrice de transformation avec scaling de base se présente comme suit:

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

Vous pouvez utiliser ce formulaire matriciel directement en tant que transformation RELATIVE pour redimensionner une mais cela peut aussi avoir une incidence sur le cisaillement et la traduction de l'élément. Pour mettre à l'échelle l'élément sans affecter son cisaillement ni sa traduction, déplacez le curseur vers la cadre de référence.

Rotation

Les transformations de rotation font pivoter un élément de page autour d'un point à l'aide des fonctions de mise à l'échelle et les paramètres de cisaillement. La matrice de transformation de rotation de base a la forme suivante : où l'angle de rotation (en radians) est mesuré à partir de l'axe X, dans le sens inverse des aiguilles d'une montre:

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

Comme pour le scaling, vous pouvez utiliser ce formulaire matriciel directement en tant que RELATIVE pour faire pivoter un élément, mais cette opération entraîne la rotation de celui-ci. sur l'origine de la page. Pour faire pivoter l'élément autour de son centre un autre point, passer à cette image de référence.

Commentaire

Le reflet reflète un élément sur une ligne ou un axe spécifique. Principes de base La matrice de transformation de réflexion des axes x et y a les formes suivantes:

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

Comme pour le scaling, vous pouvez utiliser ce formulaire matriciel directement en tant que RELATIVE pour refléter un élément, mais il se traduit par bien. Pour refléter l'élément sans aucune traduction, passer à l'image de référence correspondante.

Trames de référence d'éléments

En appliquant une échelle de base, réflexion, ou rotation directement en page produit une transformation dans le cadre de référence de la page. Par exemple, une rotation de base fait pivoter l'élément par rapport à l'origine de la page (le en haut à gauche). Cependant, vous pouvez opérer dans le cadre de référence du l'élément lui-même, par exemple pour faire pivoter un élément autour de son point central.

Pour transformer un élément dans son propre cadre de référence, placez-le entre deux Autres traductions: une traduction précédente (T1) qui déplace l'élément au centre à l'origine de la page, et une T2 de traduction suivante qui déplace l'élément à sa position d'origine. L'opération complète peut être exprimée sous forme de matrice produit:

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

Vous pouvez également passer à d'autres images de référence en traduisant différents points à l'origine. Ces points deviennent le centre de la nouvelle référence cadre.

Il est possible d'effectuer chacune de ces transformations individuellement, des requêtes de transformation RELATIVE séquentielles. Dans l'idéal, vous devez précalculer A' ci-dessus avec des multiplications de matrices et appliquer le résultat comme un seul Transformation ABSOLUTE. Vous pouvez également précalculer le produit T2 * B * T1 et nous l'appliquerons en tant que transformation RELATIVE unique. Ce sont à la fois plus efficaces, en termes d'opérations d'API, puis d'envoyer les requêtes de transformation individuellement.

Limites

Certains champs de dimensionnement et de positionnement sont incompatibles avec certains types de pages. éléments. Le tableau ci-dessous récapitule la compatibilité de certains éléments de page avec les champs de dimensionnement et de positionnement.

Champ Forme Vidéo Tableau
Translation
Scale Non**
Cier Non Non

** Pour mettre à jour les dimensions des lignes et des colonnes d'un tableau, utilisez UpdateTableRowPropertiesRequest et UpdateTableColumnPropertiesRequest

Tous les champs de dimensionnement et de positionnement peuvent donner des résultats inattendus si l'élément de page présente des cisailles. Toutes ces limites sont susceptibles d'être modifiées. Pour obtenir les informations les plus récentes, consultez API Google Slides.

L'API Slides peut refactoriser vos valeurs

Lorsque vous créez un élément de page, vous pouvez spécifier une taille et une transformation fournir un certain résultat visuel. Toutefois, l'API peut remplacer vos des valeurs par d’autres qui donnent la même apparence visuelle. En général, si si vous écrivez une taille à l'aide de l'API, vous n'êtes pas certain d'obtenir les mêmes résultats la taille de l'image. Cependant, vous devriez obtenir les mêmes résultats si vous transformez de service.