페이지 요소 크기 조정 및 위치 지정

이 가이드에서는 아핀 변환을 사용하여 페이지 요소의 크기를 조절하고 위치를 지정하는 방법을 설명합니다. 아핀 변환에 관한 개념 소개는 변환 개념 가이드를 참조하세요.

요소 변환

Slides API를 사용하여 페이지에서 요소의 위치를 조정하고 크기를 조절할 수 있습니다. 이렇게 하려면 먼저 적용해야 하는 변환의 종류를 결정한 다음 하나 이상의 UpdatePageElementTransformRequest 요소가 포함된 presentations.batchUpdate 메서드를 사용하여 해당 변환을 적용합니다.

다음 두 가지 applyModes 중 하나에서 변환을 수행할 수 있습니다.

  • ABSOLUTE 변환은 요소의 기존 변환 행렬을 대체합니다. 변환 업데이트 요청에서 생략하는 매개변수는 0으로 설정됩니다.

  • RELATIVE 변환은 요소의 기존 변환 행렬과 곱합니다 (곱셈 순서가 중요함).

$$A' = BA$$

상대 변환은 페이지 요소를 현재 위치에서 이동하거나 배율을 조정합니다. 예를 들어 도형을 왼쪽으로 100포인트 이동하거나 40도 회전합니다. 절대 변환은 기존 위치 및 배율 정보를 삭제합니다. 예를 들어 도형을 페이지 중앙으로 이동하거나 크기를 특정 너비로 조정합니다.

일반적으로 복잡한 변환은 더 간단한 변환의 시퀀스로 표현할 수 있습니다. 변환을 미리 계산(행렬 곱셈을 사용하여 여러 변환을 결합)하면 종종 오버헤드를 줄일 수 있습니다.

일부 작업의 경우 요소의 기존 변환 매개변수가 무엇인지 알아야 합니다. 이러한 값이 없는 경우 presentations.pages.get 요청을 사용하여 검색할 수 있습니다.

번역

변환은 단순히 페이지 요소를 같은 페이지의 새 위치로 이동하는 작업입니다. 절대 좌표이동은 요소를 특정 지점으로 이동하고 상대 좌표이동은 요소를 특정 거리만큼 이동합니다.

기본적인 평행 변환 변환 행렬의 형식은 다음과 같습니다.

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

크기, 기울기, 방향을 변경하지 않고 UpdatePageElementTransformRequest를 사용하여 요소를 변환하는 경우 다음 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'
  }
}

확장

배율은 X 또는 Y 차원을 따라 요소를 늘리거나 줄여 크기를 변경하는 작업입니다. 기본 크기 조정 변환 행렬의 형식은 다음과 같습니다.

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

이 행렬 형식을 RELATIVE 변환으로 직접 사용하여 요소의 크기를 조절할 수 있지만, 이는 요소의 렌더링된 기울기 및 변환에 영향을 미칠 수도 있습니다. 기울기 또는 변환에 영향을 주지 않고 요소의 크기를 조정하려면 참조 프레임으로 이동합니다.

rotation

회전 변환은 크기 조정 및 기울기 매개변수를 사용하여 한 지점을 중심으로 페이지 요소를 회전합니다. 기본 회전 변환 행렬의 형식은 다음과 같으며 X축에서 시계 반대 방향으로 움직이는 회전 각도 (라디안)가 측정됩니다.

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

크기 조정과 마찬가지로 이 행렬 형식을 RELATIVE 변환으로 직접 사용하여 요소를 회전할 수 있지만 이로 인해 요소가 페이지의 원점을 중심으로 회전합니다. 요소를 중심 또는 다른 지점을 중심으로 회전하려면 해당 참조 프레임으로 이동합니다.

복습

반사는 특정 선 또는 축을 기준으로 요소를 미러링합니다. 기본적인 x축 및 y축 반전 변환 행렬의 형식은 다음과 같습니다.

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

배율과 마찬가지로 이 행렬 형식을 RELATIVE 변환으로 직접 사용하여 요소를 반영할 수 있지만, 이는 요소도 변환하게 됩니다. 변환 없이 요소를 반영하려면 참조 프레임으로 이동합니다.

요소 참조 프레임

기본 배율, 반사 또는 회전 변환을 페이지 요소에 직접 적용하면 페이지의 참조 프레임에 변환이 생성됩니다. 예를 들어 기본 회전은 페이지의 원점 (왼쪽 상단)을 기준으로 요소를 회전합니다. 그러나 중심점을 중심으로 요소를 회전하는 등 요소 자체의 참조 프레임에서 작업할 수 있습니다.

자체 참조 프레임 내에서 요소를 변환하려면 두 가지 다른 좌표이동 사이에 요소를 묶습니다. 요소의 중심을 페이지 원점으로 이동하는 선행 변환 T1과 요소를 원래 위치로 다시 이동하는 다음 변환 T2입니다. 전체 연산은 행렬 곱으로 표현할 수 있습니다.

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

대신 다른 지점을 원점으로 변환하여 다른 참조 프레임으로 전환할 수도 있습니다. 이 지점이 새 참조 프레임의 중심이 됩니다.

이러한 각 변환을 순차적 RELATIVE 변환 요청으로 개별적으로 수행할 수 있습니다. 행렬 곱셈을 사용하여 위의 A'를 미리 계산하고 그 결과를 단일 ABSOLUTE 변환으로 적용하는 것이 이상적입니다. 또는 T2 * B * T1 제품을 미리 계산하여 단일 RELATIVE 변환으로 적용합니다. 둘 다 API 작업 후 변환 요청을 개별적으로 전송하는 측면에서 더 효율적입니다.

제한사항

일부 크기 및 위치 지정 필드는 일부 페이지 요소 유형과 호환되지 않습니다. 아래 표에는 특정 페이지 요소와 크기 및 위치 필드의 호환성이 요약되어 있습니다.

필드 모양 동영상 테이블
번역과
점수 아니요**
기울기 No No

** 표의 행 및 열 측정기준을 업데이트하려면 UpdateTableRowPropertiesRequestUpdateTableColumnPropertiesRequest를 사용합니다.

페이지 요소에 기울기가 있는 경우 모든 크기 및 위치 필드에 예기치 않은 결과가 발생할 수 있습니다. 모든 제한사항은 변경될 수 있습니다. 최신 정보는 Google Slides API를 참고하세요.

Slides API가 값을 리팩터링할 수 있음

페이지 요소를 만들 때 특정한 시각적 결과를 제공하는 크기 및 변환을 지정할 수 있습니다. 그러나 API는 제공된 값을 동일한 시각적 모양을 생성하는 다른 값으로 바꿀 수 있습니다. 일반적으로 API를 사용하여 크기를 작성하면 동일한 크기가 반환되지 않을 수 있습니다. 그러나 변환을 고려하는 경우 동일한 결과를 얻어야 합니다.