Il existe deux façons d'obtenir et de modifier la taille et la position d'un fichier un élément de page:
- Utiliser ses fonctions getter et setter pour la taille et la position
- Manipuler sa transformation affine à l'aide de ses fonctions
getTransform()
etsetTransform()
tout en conservant la taille inhérente.
Lire les propriétés des éléments de page
Comme le montre la figure, la taille et la position sont mesurées par rapport à la cadre de délimitation d'un élément de page affiché lorsqu'il n'a pas de rotation:
- Gauche et Haut: mesure effectuée à partir de l'angle supérieur gauche de la page jusqu'au
le coin supérieur gauche du cadre de délimitation sans rotation. Utilisez
getLeft()
etgetTop()
pour lire les valeurs. - Largeur et Hauteur: largeur et hauteur de la boîte englobante sans rotation.
Utilisez
getWidth()
etgetHeight()
pour lire les valeurs. - Rotation: rotation dans le sens des aiguilles d'une montre par rapport à la ligne verticale qui entoure
le centre du cadre de délimitation. Utilisez
getRotation()
pour lire la valeur.
Toutes les longueurs sont mesurées en points (pt). La rotation se mesure en degrés (°).
Définir les propriétés des éléments de page
Vous pouvez définir la taille et la position d'un élément de page lorsque vous le créez en utilisant
Une méthode d'insertion telle que insertShape()
. Pour une forme existante, vous pouvez définir
la taille, la position et la rotation ; vous pouvez également définir
la mise à l'échelle d'un élément sur
le redimensionner ou le refléter le long de l'un de ses bords.
Lors de la création
Vous pouvez fournir des informations de position et de taille lorsque vous créez un élément de page.
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.');
Le script ci-dessus crée une forme sur la première diapositive de la présentation active avec la position et la taille spécifiées, et lit les informations de position et de taille de la forme. Le journal attendu est le suivant:
Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.
Taille, position et rotation
Vous pouvez mettre à jour la taille et la position d'un élément de page après sa création:
- Utilisez
setLeft()
etsetTop()
pour définir la position de l'angle supérieur gauche cadre de délimitation sans rotation. - Utiliser
setWidth()
etsetHeight()
pour définir la largeur et la hauteur affichées de la délimitation . - Utilisez
setRotation()
pour définir la rotation dans le sens des aiguilles d'une montre du cadre de délimitation autour de sa de sécurité.
Le script suivant crée une forme sur la première diapositive de la présentation active, utilise des setters pour mettre à jour sa position, sa taille et sa rotation, et lit la position et la taille de la forme.
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.');
La sortie de journal attendue de ce script se présente comme suit:
Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.
Les setters de taille, de position et de rotation peuvent être utilisés dans n'importe quel ordre ou combinaison. Si vous remplacez la troisième ligne ci-dessus par le script suivant, vous obtiendrez le même résultat:
shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);
Scaling
Au lieu d'utiliser setWidth()
et setHeight()
ci-dessus pour définir la taille de la forme
à une valeur absolue, scaleWidth()
et scaleHeight()
peuvent être utilisés pour étirer ou
presser un élément de la page avec un facteur de mise à l'échelle relatif
shape.scaleHeight(0.5).scaleWidth(2);
La figure ci-dessous illustre le fonctionnement du code ci-dessus sur une forme carrée pivotée à 45°. Notez que l'angle supérieur gauche du cadre de délimitation est fixe lors de la mise à l'échelle.
Reflet le long du bord
L'argument dans scaleWidth()
et scaleHeight()
peut être négatif afin qu'ils puissent
inverser un élément de page horizontalement ou verticalement.
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.
La figure ci-dessous illustre le fonctionnement du code ci-dessus sur une forme pivotée à 45°. Notez que l'élément de page est retourné le long de l'un des bords de son cadre de délimitation, mais pas en son centre.
Rotation de la ligne
Comme les autres éléments de page, la rotation d'une ligne ne correspond pas à l'angle vertical d'un
mais la rotation de son cadre de délimitation. Lorsque vous créez une ligne avec
de début et de fin spécifiés, la rotation est toujours de 0°. Glisser
les extrémités de la ligne dans l'interface utilisateur de Google Slides changent également d'angle vertical.
comme la taille et la position de son cadre de délimitation, mais ne change pas
sa rotation. L'utilisation de setRotation()
fait pivoter le cadre de délimitation de la ligne, ce qui
modifie efficacement son angle vertical. Ainsi, deux droites peuvent
ont le même angle vertical visuel, mais des cadres de délimitation différents, et donc
des valeurs différentes de taille,
de position et de rotation.
Limites
Certaines méthodes de dimensionnement et de positionnement sont incompatibles avec certains types de pages. éléments. Le tableau ci-dessous récapitule les méthodes non compatibles avec certains types d'éléments de page.
Méthodes | Forme | Vidéo | Tableau |
---|---|---|---|
getHeight(), getWidth() | ✔ | ✔ | NO (renvoie la valeur null) |
setHeight(), setWidth() | ✔ | ✔ | NON |
setRotation() | ✔ | NON | NON |
scaleHeight(), scaleWidth() | ✔ | ✔ | NON |
Toutes les méthodes de dimensionnement et de positionnement peuvent donner des résultats inattendus si la page est cisagé. Toutes ces limites sont susceptibles d'être modifiées. Consulter la référence pour des informations à jour.
Utiliser des transformations affines
Pour un contrôle avancé, la taille et la position d'un élément de page peuvent également être calculé et ajusté grâce à sa taille inhérente (native) et à sa transformation affine.
Google Apps Script offre une interface semblable à celle de l'API Google Slides pour utiliser la transformation affine.
- À lire, ce
cet article explique
les concepts de transformation affine et comment déduire la taille rendue à partir d'une
(native) de taille et de transformation des éléments de page. Dans Apps Script, utilisez
<ph type="x-smartling-placeholder">
- </ph>
getInherentWidth()
etgetInherentHeight()
pour la taille native de la page. éléments ;getTransform()
pour la transformation affine des éléments de la page.
- Pour écrire, cela
cet article décrit
comment dimensionner et positionner les éléments de page à l'aide de la transformation affine pour obtenir
mise à l'échelle, rotation, réflexion, etc. Dans Apps Script, utilisez
<ph type="x-smartling-placeholder">
- </ph>
setTransform()
pour définir la transformation affine des éléments de la page (comme mode ABSOLUTE) ;preconcatenateTransform()
pour préconcaténer une transformation affine avec la fonction Transformation actuelle des éléments de la page (semblable au mode RELATIVE).
Le script suivant crée une forme, définit sa transformation, lit sa taille inhérente, et lit sa transformation affine.
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.');
La sortie de journal attendue de ce script se présente comme suit:
Inherent width: 236.2pt; Inherent height: 236.2pt.
La forme obtenue présente la transformation suivante, et la taille et la position sont affichées:
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°.