Định cỡ và định vị phần tử trang

Hướng dẫn này mô tả cách bạn định kích thước và định vị các phần tử trang bằng affine biến đổi. Để làm quen với khái niệm biến đổi affine, hãy xem hướng dẫn về khái niệm về Biến đổi.

Chuyển đổi các phần tử

API Trang trình bày cho phép bạn đặt lại vị trí và điều chỉnh tỷ lệ các phần tử trên một trang. Để thực hiện việc này, Trước tiên, hãy xác định loại quy tắc chuyển đổi cần áp dụng, sau đó áp dụng quy tắc đó chuyển đổi bằng cách sử dụng presentations.batchUpdate phương thức chứa một hoặc nhiều UpdatePageElementTransformRequest phần tử.

Biến đổi có thể được thực hiện theo một trong hai cách applyModes:

  • ABSOLUTE biến đổi thay thế phép biến đổi hiện có của phần tử ma trận. Mọi tham số mà bạn bỏ qua trong yêu cầu cập nhật biến đổi đều được đặt thành 0.

  • RELATIVE biến đổi được nhân với giá trị hiện có của phần tử ma trận biến đổi (thứ tự của các phép nhân rất quan trọng):

$$A' = BA$$

Các biến đổi tương đối sẽ di chuyển hoặc điều chỉnh tỷ lệ phần tử trang so với vị trí hiện tại; ví dụ: di chuyển hình dạng 100 điểm sang trái hoặc xoay 40 độ. Biến đổi tuyệt đối loại bỏ thông tin vị trí và tỷ lệ hiện có; với ví dụ: di chuyển một hình dạng vào giữa trang hoặc điều chỉnh tỷ lệ hình dạng chiều rộng cụ thể.

Các phép biến đổi phức tạp thường có thể được biểu diễn dưới dạng một chuỗi gồm các phép biến đổi đơn giản hơn. Tính toán trước một phép biến đổi – kết hợp nhiều phép biến đổi bằng cách sử dụng phép nhân ma trận – thường có thể giảm mức hao tổn.

Đối với một số thao tác, bạn phải biết biến đổi hiện có của một phần tử . Nếu không có các giá trị này, bạn có thể truy xuất chúng bằng presentations.pages.get của bạn.

Dịch thuật

Dịch đơn giản chỉ là hành động di chuyển một phần tử trang sang một vị trí mới trên trên cùng một trang. Bản dịch Absolute sẽ di chuyển phần tử đến một điểm cụ thể, trong khi bản dịch tương đối di chuyển phần tử một khoảng cách cụ thể.

Ma trận biến đổi bản dịch cơ bản có dạng:

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

Khi bạn sử dụng UpdatePageElementTransformRequest để dịch một phần tử (mà không làm thay đổi kích thước, độ cắt hoặc hướng của phần tử đó), bạn có thể sử dụng một trong các AffineTransform cấu trúc:

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

Chuyển tỷ lệ

Chuyển tỷ lệ là hành động kéo giãn hoặc ép một phần tử dọc theo dấu X và/hoặc Phương diện Y để thay đổi kích thước. Ma trận biến đổi tỷ lệ cơ bản có dạng như sau:

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

Bạn có thể trực tiếp sử dụng biểu mẫu ma trận này dưới dạng phép biến đổi RELATIVE để đổi kích thước một nhưng điều này cũng có thể ảnh hưởng đến khả năng cắt và dịch thuật của phần tử. Để điều chỉnh tỷ lệ phần tử mà không ảnh hưởng đến độ cắt hoặc bản dịch của phần tử, hãy chuyển sang khung tham chiếu.

Góc xoay

Biến đổi xoay làm xoay phần tử trang xung quanh một điểm, sử dụng phương pháp điều chỉnh theo tỷ lệ và tham số cắt. Ma trận biến đổi xoay cơ bản có dạng như sau, trong đó góc quay (tính bằng radian) được đo từ trục X, di chuyển ngược chiều kim đồng hồ:

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

Tương tự như việc điều chỉnh theo tỷ lệ, bạn có thể trực tiếp sử dụng biểu mẫu ma trận này dưới dạng RELATIVE biến đổi để xoay một phần tử, nhưng thao tác này khiến phần tử bị xoay về nguồn gốc của trang. Để xoay phần tử quanh tâm hoặc điểm khác nhau, chuyển sang khung tham chiếu đó.

Phản chiếu

Hình ảnh phản chiếu phản chiếu một phần tử qua một đường hoặc trục cụ thể. Cơ bản Ma trận biến đổi phản xạ trục x và y có các dạng sau:

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

Tương tự như việc điều chỉnh theo tỷ lệ, bạn có thể trực tiếp sử dụng biểu mẫu ma trận này dưới dạng RELATIVE biến đổi để phản ánh một phần tử, nhưng điều này khiến phần tử đó dịch thành tốt. Để phản ánh phần tử mà không cần bản dịch, chuyển sang khung tham chiếu.

Khung tham chiếu phần tử

Áp dụng tỷ lệ cơ bản, phản ánh hoặc xoay chuyển đổi trực tiếp thành một trang tạo ra phép biến đổi trong khung tham chiếu của trang. Ví dụ: một xoay cơ bản sẽ xoay phần tử về nguồn gốc của trang (phần tử góc trên bên trái). Tuy nhiên, bạn có thể hoạt động trong khung tham chiếu của bản thân phần tử, ví dụ: để xoay phần tử xung quanh điểm giữa của nó.

Để chuyển đổi một phần tử trong khung tham chiếu của chính nó, hãy đặt phần tử đó vào giữa hai các bản dịch khác: bản dịch trước đó T1 di chuyển tâm phần tử vào nguồn gốc của trang và bản dịch T2 sau đây để di chuyển phần tử này trở về vị trí ban đầu. Toán tử đầy đủ có thể được biểu thị dưới dạng ma trận sản phẩm:

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

Bạn cũng có thể chuyển sang các hệ tham chiếu khác bằng cách dịch các điểm khác nhau về máy chủ gốc. Các điểm này trở thành trung tâm của tham chiếu mới khung.

Có thể thực hiện từng phép biến đổi này theo cách riêng yêu cầu biến đổi RELATIVE tuần tự. Tốt nhất là bạn nên tính trước A' ở trên với phép nhân ma trận và áp dụng kết quả dưới dạng một Biến đổi ABSOLUTE. Ngoài ra, hãy tính trước sản phẩm T2 * B * T1 và áp dụng biến đó dưới dạng một phép biến đổi RELATIVE. Cả hai cách này đều hiệu quả hơn, về hoạt động API, sau đó gửi từng yêu cầu biến đổi riêng lẻ.

Các điểm hạn chế

Một số trường kích thước và vị trí không tương thích với một số loại trang phần tử. Bảng dưới đây tóm tắt khả năng tương thích của một số phần tử trang với các trường kích thước và vị trí.

Trường Hình dạng Video Bảng
Bản dịch
Điều chỉnh theo tỷ lệ Không**
Cắt Không Không

** Để cập nhật phương diện hàng và cột trong bảng, hãy sử dụng UpdateTableRowPropertiesRequestUpdateTableColumnPropertiesRequest.

Tất cả các trường kích thước và định vị có thể trả lại kết quả không mong muốn nếu phần tử trang bị cắt. Tất cả các giới hạn có thể thay đổi. Để biết thông tin mới nhất, hãy xem API Google Trang trình bày.

API Trang trình bày có thể tái cấu trúc các giá trị của bạn

Khi bạn tạo phần tử trang, bạn có thể chỉ định kích thước và biến đổi phần tử đó cung cấp một kết quả trực quan nhất định. Tuy nhiên, API có thể thay thế thông tin bạn cung cấp với các giá trị khác mà có cùng giao diện trực quan. Nhìn chung, nếu bạn ghi kích thước bằng API, nhưng bạn sẽ không được đảm bảo trả về kích thước như cũ kích thước. Tuy nhiên, bạn sẽ nhận được kết quả tương tự nếu áp dụng quy tắc chuyển đổi thành tài khoản.