Tamaño y posicionamiento de los elementos de página

En esta guía, se describe cómo definir el tamaño y la posición de los elementos de página con el uso de afinidad transformaciones de datos. Para 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, aplica esa una transformación con el presentations.batchUpdate método que contenga uno o más UpdatePageElementTransformRequest o de terceros.

Las transformaciones se pueden realizar en una de dos applyModes:

  • Las transformaciones ABSOLUTE reemplazan la transformación existente del elemento. de salida. Todos los parámetros que se omiten en la solicitud de actualización de transformación se configuran como cero.

  • Las transformaciones RELATIVE se multiplican por el valor existente matriz de transformación (el orden de multiplicación importa):

$$A' = BA$$

Las transformaciones relativas mueven o escalan el elemento de página desde donde se encuentra actualmente. por ejemplo, mover una forma 100 puntos hacia la izquierda o rotarla 40 grados. Las transformaciones absolutas descartan la información existente de posición y escala. para por ejemplo, mover una forma al centro de la página o ajustarla para que un ancho específico.

Por lo general, las transformaciones complejas pueden expresarse como una secuencia de transformaciones más simples. Cálculo previo de una transformación: combinar varias transformaciones mediante la multiplicación de matrices y, a menudo, puede reducir la sobrecarga.

Para algunas operaciones, debes saber cuál es la transformación existente de un elemento de cada parámetro. Si no tienes estos valores, puedes recuperarlos con un presentations.pages.get para cada solicitud.

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 Absolute mueven el elemento a un punto específico. mientras que las relativas mueven el elemento una distancia específica.

Una matriz de transformación de traslación básica tiene la siguiente forma:

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

Cuando usas UpdatePageElementTransformRequest. para trasladar un elemento (sin alterar su tamaño, corteza u orientación), puedes usar uno de los siguientes AffineTransform estructuras:

// 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 ajuste de escala es la acción de estirar o comprimir un elemento a lo largo de la X o dimensión Y para cambiar su tamaño. Una matriz de transformación de escalamiento básica tiene la siguiente forma:

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

Puedes usar esta forma de matriz directamente como una transformación RELATIVE para cambiar el tamaño de un pero esto también puede afectar la distorsión y traslación renderizada 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 las escalas y parámetros de distorsión. La matriz básica de rotación tiene la siguiente forma: donde el ángulo de rotación (en radianes) se mide a partir del eje X, con un movimiento en el sentido contrario a las manecillas del reloj:

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

Al igual que con el escalamiento, puedes usar esta forma de matriz directamente como RELATIVE. transforma para rotar un elemento, pero esto hace que rote sobre el origen de la página. Para rotar el elemento sobre su centro o una otro punto, cambia a ese marco de referencia.

Comentarios

El reflejo duplica un elemento en una línea o un eje específicos. Aspectos básicos La matriz de transformación de reflejo en los ejes X e Y tiene las siguientes formas:

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

Al igual que con el escalamiento, puedes usar esta forma de matriz directamente como RELATIVE. transform para reflejar un elemento, pero esto hace que el elemento se traduzca como en la nube. Para reflejar el elemento sin ninguna traducción, cambia a su marco de referencia.

Marcos de referencia de elementos

Aplicar una escala básica, reflexión o se transforman directamente en rotation en una 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 sobre el origen de la página (la esquina superior izquierda). Sin embargo, puedes operar en el marco de referencia de la elemento en sí, por ejemplo, para rotar un elemento sobre su punto central.

Para transformar un elemento dentro de su propio marco de referencia, enciérralo entre dos otras traducciones: una traducción anterior T1 que mueve el centro del elemento al origen de la página y una traducción siguiente T2 que mueve el elemento a su posición original. La operación completa se puede expresar como una matriz producto:

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

También puedes cambiar a otros marcos de referencia al traducir diferentes puntos al origen. Estos puntos se convierten en el centro de la nueva referencia marco.

Es posible realizar cada una de estas transformaciones individualmente de la siguiente manera: solicitudes de transformación RELATIVE secuenciales. Idealmente, deberías procesar previamente A' de arriba con multiplicaciones de matrices y aplica el resultado como una sola Transformación ABSOLUTE. Como alternativa, procesa con anterioridad el producto T2 * B * T1 y aplícala como una sola transformación RELATIVE. Ambos son más eficientes, en términos de operaciones de API, 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 página o de terceros. 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, utiliza 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 proporcionan un resultado visual determinado. Sin embargo, es posible que la API reemplace de salida por otros que producen la misma apariencia visual. En general, si escribes un tamaño con la API, no se garantiza que obtendrás el mismo de tamaño del ensamble. Sin embargo, deberías obtener los mismos resultados si tomas la transformación en de servicio predeterminada.