En esta guía, se describe cómo ajustar el tamaño y la posición de los elementos de página con transformaciones afines. Para obtener una introducción conceptual a las transformaciones afines, consulta la guía de conceptos de Transformaciones.
Cómo transformar elementos
La API de Presentaciones te permite cambiar la posición y el ajuste de los elementos de una página. Para ello, primero determina qué tipo de transformación debe aplicarse y, luego, aplícala con el método presentations.batchUpdate, que contiene uno o más elementos UpdatePageElementTransformRequest.
Las transformaciones se pueden realizar en uno de dos applyModes:
Las transformaciones
ABSOLUTE
reemplazan la matriz de transformación existente del elemento. Todos los parámetros que omites en la solicitud de actualización de transformación se configuran en cero.Las transformaciones
RELATIVE
se multiplican por la matriz de transformación existente del elemento (el orden de multiplicación es importante):
Las transformaciones relativas permiten mover o ajustar el tamaño del elemento de página desde su posición actual; por ejemplo, mover una forma 100 puntos hacia la izquierda o rotarla 40 grados. Las transformaciones absolutas descartan la información de posición y escala existente; por ejemplo, mover una forma al centro de la página o ajustarla para que tenga un ancho específico.
Por lo general, las transformaciones complejas pueden expresarse como una secuencia de transformaciones más simples. A menudo, calcular previamente una transformación, combinar varias transformaciones mediante la multiplicación de matrices, puede reducir la sobrecarga.
Para algunas operaciones, debes saber cuáles son los parámetros de transformación existentes de un elemento. Si no dispones de estos valores, puedes recuperarlos con una solicitud presentations.pages.get.
Traducción
La traslación es simplemente la acción de mover un elemento de página a una nueva posición en la misma página. Las traslaciones absolutas mueven el elemento hasta un punto específico, mientras que las relativas lo mueven una distancia específica.
Una matriz de transformación de traslación básica tiene la siguiente forma:
Cuando usas una UpdatePageElementTransformRequest para traducir un elemento (sin alterar su tamaño, distorsión u orientación), puedes usar una de las siguientes estructuras de AffineTransform:
// 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' } }
Escalamiento
El escalamiento es la acción de estirar o comprimir un elemento en la dimensión X o Y para cambiar su tamaño. Una matriz de transformación de escalamiento básica tiene la siguiente forma:
Puedes usar esta forma de matriz directamente como una transformación RELATIVE
para cambiar el tamaño de un elemento, pero esto también puede afectar la distorsión y traslación renderizadas del elemento.
Para ajustar el tamaño del elemento sin afectar su distorsión o traslación, cambia a su marco de referencia.
Rotación
Las transformaciones de rotación rotan un elemento de página sobre un punto mediante los parámetros de escalamiento y distorsión. La matriz básica de rotación tiene la siguiente forma, en la que el ángulo de rotación (en radianes) se mide a partir del eje X, en sentido antihorario:
Al igual que con el escalamiento, puedes usar esta forma de matriz directamente como una transformación RELATIVE
para rotar un elemento, pero esto hace que este rote sobre el origen de la página. Para rotar el elemento sobre su centro o un punto diferente, cambia a ese marco de referencia.
Comentarios
El reflejo duplica un elemento en una línea o un eje específicos. La matriz básica de transformación de reflejo en ejes X e Y tiene las siguientes formas:
Al igual que con el escalamiento, puedes usar esta forma de matriz directamente como una transformación RELATIVE
para reflejar un elemento, pero esto también hace que el elemento se traduzca. Para reflejar el elemento sin traslación, cambia a su marco de referencia.
Marcos de referencia de elementos
Aplicar una transformación básica de escala, reflexión o rotación directamente a un elemento de página produce una transformación en el marco de referencia de la página. Por ejemplo, una rotación básica rota el elemento en el origen de la página (la esquina superior izquierda). Sin embargo, puedes realizar acciones en el marco de referencia del elemento, por ejemplo, para rotar un elemento sobre su punto central.
Para transformar un elemento dentro de su propio marco de referencia, enciérralo entre otras dos traslaciones: una T1
de traslación precedente que mueve el centro del elemento al origen de la página y una T2
de traslación siguiente que mueve el elemento a su posición original. La operación completa se puede expresar como un producto de matriz:
También puedes cambiar a otros marcos de referencia si traduces diferentes puntos al origen. Estos puntos se convierten en el centro del nuevo marco de referencia.
Es posible realizar cada una de estas transformaciones de manera individual como solicitudes de transformación RELATIVE
secuenciales. Lo ideal es que calcules con anterioridad el valor de A'
con multiplicaciones de matrices y apliques el resultado como una sola transformación ABSOLUTE
. Como alternativa, calcula previamente el producto T2 * B * T1
y aplícalo como una sola transformación RELATIVE
. Estas dos operaciones son más eficientes en términos de operaciones de API que el envío individual de las solicitudes de transformación.
Limitaciones
Algunos campos de tamaño y posicionamiento no son compatibles con algunos tipos de elementos de página. En la siguiente tabla, se resume la compatibilidad de ciertos elementos de la página con los campos de tamaño y posicionamiento.
Campo | Forma | Video | Tabla |
---|---|---|---|
Translation | ✔ | ✔ | ✔ |
Escala | ✔ | ✔ | No** |
Cjerar | ✔ | No | No |
** Para actualizar las dimensiones de filas y columnas de la tabla, usa UpdateTableRowPropertiesRequest
y UpdateTableColumnPropertiesRequest
.
Todos los campos de tamaño y posicionamiento pueden dar resultados inesperados si el elemento de página presenta distorsión. Todas las limitaciones están sujetas a cambios. Para obtener información actualizada, consulta la API de Google Slides.
La API de Presentaciones puede refactorizar tus valores
Cuando creas un elemento de página, puedes especificar un tamaño y una transformación que proporcionen un resultado visual determinado. Sin embargo, la API puede reemplazar los valores proporcionados por otros que brinden la misma apariencia visual. En general, si escribes un tamaño con la API, no se garantiza que obtendrás el mismo tamaño. Sin embargo, deberías obtener los mismos resultados si tienes en cuenta la transformación.