Dimensionar e posicionar os elementos da página

Este guia descreve como dimensionar e posicionar elementos de página usando de dados. Para uma introdução conceitual às transformações afins, consulte o guia do conceito Transformações.

Transformando elementos

A Slides API permite reposicionar e dimensionar elementos em uma página. Para isso, primeiro determine o tipo de transformação que precisa ser aplicado e, em seguida, aplique transformada usando a função presentations.batchUpdate que contém uma ou mais UpdatePageElementTransformRequest os elementos.

As transformações podem ser feitas de duas formas applyModes:

  • As transformações ABSOLUTE substituem a transformação atual do elemento matricial. Todos os parâmetros omitidos da solicitação de atualização de transformação são definidos como zero.

  • As transformações RELATIVE são multiplicadas pelas transformações atuais do elemento matriz de transformação (a ordem de multiplicação importa):

$$A' = BA$$

As transformações relativas movem ou escalonam o elemento de página de onde ele está no momento. por exemplo, mover uma forma 100 pontos para a esquerda ou girá-la 40 graus. As transformações absolutas descartam informações atuais de posição e escala. para por exemplo, mover uma forma para o centro da página ou dimensioná-la para larguras específicas.

Transformações complexas podem ser expressas como uma sequência de outras mais simples. Pré-cálculo de uma transformação: combinação de várias transformações usando multiplicação de matrizes) pode reduzir a sobrecarga.

Para algumas operações, você precisa saber o que a transformação atual de um elemento parâmetros são. Se você não tiver esses valores, poderá recuperá-los com uma presentations.pages.get solicitação.

Tradução

Translação é simplesmente a ação de mover um elemento de página para uma nova posição no na mesma página. Traduções Absolute movem o elemento para um ponto específico, enquanto as traduções relativas movem o elemento por uma distância específica.

Uma matriz de transformação de conversão básica tem a seguinte forma:

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

Quando você usa uma UpdatePageElementTransformRequest para traduzir um elemento (sem alterar seu tamanho, distorção ou orientação), você é possível usar uma das seguintes opções AffineTransform estruturas:

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

Escalonamento

Dimensionamento é a ação de alongar ou comprimir um elemento ao longo do X e/ou dimensão Y para alterar o tamanho dela. Uma matriz de transformação de escalonamento básica tem a seguinte forma:

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

É possível usar o formato de matriz diretamente como uma transformação RELATIVE para redimensionar um mas isso também pode afetar a distorção e a movimentação renderizadas do elemento. Para dimensionar o elemento sem afetar sua distorção ou movimentação, mude para seu frame de referência.

Rotação

Transformações de rotação giram um elemento de página em torno de um ponto, usando as funções de parâmetros de distorção. A matriz de transformação básica de rotação tem o seguinte formato: em que o ângulo de rotação (em radianos) é medido a partir do eixo X, movendo-se sentido anti-horário:

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

Assim como no escalonamento, é possível usar a forma de matriz diretamente como um RELATIVE transformam para girar um elemento, mas isso faz com que ele seja girado sobre a origem da página. Para girar o elemento em torno de seu centro ou em uma um ponto diferente, mudar para esse frame de referência.

Reflexão

O reflexo espelha um elemento em uma linha ou eixo específico. O básico A matriz de transformação de reflexo dos eixos x e y tem as seguintes 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}$$

Assim como no escalonamento, é possível usar a forma de matriz diretamente como um RELATIVE transformam para refletir um elemento, mas isso faz com que o elemento seja convertido como muito bem. Para refletir o elemento sem translação, mudar para o frame de referência.

Frames de referência de elementos

Aplicando uma escala básica, reflexão ou rotação se transforma diretamente em uma página produz uma transformação no frame de referência da página. Por exemplo: uma rotação básica gira o elemento em torno da origem da página (a no canto superior esquerdo). No entanto, é possível operar no frame de referência do do elemento em si, por exemplo, para girá-lo em torno de seu ponto central.

Para transformar um elemento dentro do próprio frame de referência, coloque-o entre dois outras traduções: uma tradução anterior T1 que move o elemento para o centro à origem da página, e uma T2 de tradução que move o elemento de volta à posição original. A operação completa pode ser expressa como uma matriz produto:

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

Também é possível alternar para outros frames de referência traduzindo diferentes pontos. para a origem. Esses pontos se tornam o centro da nova referência frame.

É possível realizar cada uma dessas transformações individualmente solicitações de transformação RELATIVE sequenciais; O ideal é pré-calcular A' acima com multiplicações de matrizes e aplicar o resultado como um único Transformação ABSOLUTE. Como alternativa, pré-compute o produto T2 * B * T1 e aplicá-lo como uma única transformação RELATIVE. Ambos são mais eficientes, em termos de operações de API e, em seguida, enviar as solicitações de transformação individualmente.

Limitações

Alguns campos de dimensionamento e posicionamento são incompatíveis com alguns tipos de página. os elementos. A tabela abaixo resume a compatibilidade de certos elementos de página com os campos de dimensionamento e posicionamento.

Campo Forma Vídeo Tabela
Tradução
Escala Não**
Treia Não Não

** Para atualizar as dimensões de linha e coluna da tabela, use UpdateTableRowPropertiesRequest e UpdateTableColumnPropertiesRequest.

Todos os campos de dimensionamento e posicionamento poderão gerar resultados inesperados se o elemento de página tiver distorção. Todas as limitações estão sujeitas a alterações. Veja informações atualizadas na API Google Slides.

A API Slides pode refatorar seus valores

Ao criar um elemento de página, é possível especificar um tamanho e transformar esse fornecem um determinado resultado visual. No entanto, a API pode substituir as valores com outros que produzem a mesma aparência visual. Em geral, se você grava um tamanho usando a API, não há garantia de retornar o mesmo tamanho. No entanto, você deve obter os mesmos resultados se fizer a transformação em do Compute Engine.