Hướng dẫn này giải thích cách bạn định cỡ và định vị các phần tử trên trang bằng cách sử dụng các phép biến đổi affine với Google Slides API. Để biết thông tin giới thiệu về khái niệm về phép biến đổi affine, hãy xem hướng dẫn về khái niệm Phép biến đổi và các phần tử trang.
Biến đổi các phần tử
Slides API cho phép bạn di chuyển và điều chỉnh tỷ lệ các phần tử trên một trang. Để làm việc này, trước tiên, hãy xác định loại phép biến đổi cần áp dụng, sau đó áp dụng phép biến đổi đó bằng phương thức presentations.batchUpdate()
chứa một hoặc nhiều phần tử UpdatePageElementTransformRequest
.
Bạn có thể thực hiện các phép biến đổi bằng cách sử dụng ApplyMode
:
ABSOLUTE
biến đổi thay thế ma trận biến đổi hiện có của phần tử. Mọi thông số mà bạn bỏ qua trong yêu cầu cập nhật biến đổi đều được đặt thành 0.Các phép biến đổi
RELATIVE
được nhân với ma trận biến đổi hiện có của phần tử (thứ tự nhân có ý nghĩa):
Các phép biến đổi tương đối di chuyển hoặc mở rộng phần tử trang từ vị trí hiện tại. Ví dụ: di chuyển một hình dạng 100 điểm sang trái hoặc xoay hình dạng đó 40 độ. Các phép biến đổi tuyệt đối sẽ loại bỏ thông tin hiện có về vị trí và tỷ lệ; ví dụ: di chuyển một hình dạng đến giữa trang hoặc điều chỉnh tỷ lệ để có chiều rộng cụ thể.
Các phép biến đổi phức tạp thường có thể được biểu thị dưới dạng một chuỗi các phép biến đổi đơn giản hơn. Việc 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 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 các tham số 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 phương thức presentations.pages.get()
.
Dịch thuật
Dịch là hành động di chuyển một phần tử trang đến một vị trí mới trên cùng một trang. Phép dịch tuyệt đối di chuyển phần tử đến một điểm cụ thể, trong khi phép 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 phép tịnh tiến cơ bản có dạng:
Khi sử dụng UpdatePageElementTransformRequest
để dịch một phần tử (mà không làm thay đổi kích thước, độ nghiêng hoặc hướng của phần tử đó), bạn có thể sử dụng một trong các cấu trúc AffineTransform sau đây:
// 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' } }
Tỷ lệ
Điều chỉnh tỷ lệ là hành động kéo giãn hoặc thu hẹp một phần tử theo chiều X hoặc Y để thay đổi kích thước của phần tử đó. Ma trận biến đổi tỷ lệ cơ bản có dạng:
Bạn có thể dùng trực tiếp biểu mẫu ma trận này làm phép biến đổi RELATIVE
để đổi kích thước một phần tử, nhưng điều này cũng có thể ảnh hưởng đến độ xiên và phép tịnh tiến được kết xuất của phần tử.
Để điều chỉnh tỷ lệ phần tử mà không ảnh hưởng đến độ xiên hoặc phép tịnh tiến của phần tử, hãy chuyển sang khung tham chiếu phần tử.
Xoay
Phép biến đổi xoay sẽ xoay một phần tử trên trang quanh một điểm, bằng cách sử dụng các tham số thu phóng và cắt. Ma trận biến đổi xoay cơ bản có dạng sau, trong đó góc xoay (tính bằng radian) được đo từ trục X, di chuyển ngược chiều kim đồng hồ:
Tương tự như việc mở rộng tỷ lệ, bạn có thể sử dụng trực tiếp biểu mẫu ma trận này làm phép biến đổi RELATIVE
để xoay một phần tử, nhưng điều này khiến phần tử đó xoay quanh gốc của trang. Để xoay phần tử quanh tâm hoặc một điểm khác, hãy chuyển sang khung tham chiếu phần tử đó.
Phản chiếu
Phản chiếu là tạo bản sao đối xứng của một phần tử qua một đường thẳng hoặc trục cụ thể. Ma trận biến đổi phản chiếu cơ bản theo trục x và y có dạng như sau:
Tương tự như việc điều chỉnh tỷ lệ, bạn có thể dùng trực tiếp dạng ma trận này làm phép biến đổi RELATIVE
để phản chiếu một phần tử, nhưng việc này cũng khiến phần tử đó dịch chuyển. Để phản chiếu phần tử mà không cần dịch, hãy chuyển sang khung tham chiếu phần tử.
Khung tham chiếu phần tử
Việc áp dụng một phép biến đổi thu phóng, xoay hoặc phản chiếu cơ bản trực tiếp cho một phần tử trang sẽ tạo ra một phép biến đổi trong khung tham chiếu của trang. Ví dụ: một phép xoay cơ bản sẽ xoay phần tử quanh điểm gốc của trang (góc trên cùng bên trái). Tuy nhiên, bạn có thể thao tác trong khung tham chiếu của phần tử, chẳng hạn như xoay một phần tử quanh điểm trung tâm của phần tử đó.
Để biến đổi một phần tử trong khung tham chiếu của chính nó, hãy đặt phần tử đó giữa hai bản dịch khác: một bản dịch trước T1
di chuyển tâm phần tử đến gốc trang và một bản dịch sau T2
di chuyển phần tử trở lại vị trí ban đầu. Bạn có thể biểu thị toàn bộ thao tác dưới dạng tích của ma trận:
Bạn cũng có thể chuyển sang các khung tham chiếu khác bằng cách dịch các điểm khác nhau sang gốc thay vì dịch các điểm khác nhau sang gốc. Những điểm này sẽ trở thành tâm của khung tham chiếu mới.
Bạn có thể thực hiện từng phép biến đổi này riêng lẻ dưới dạng các yêu cầu biến đổi RELATIVE
tuần tự. Tốt nhất là bạn nên tính toán trước A'
ở trên bằng phép nhân ma trận và áp dụng kết quả dưới dạng một phép biến đổi ABSOLUTE
duy nhất. Ngoài ra, hãy tính toán trước tích T2 * B * T1
và áp dụng tích đó dưới dạng một phép biến đổi RELATIVE
duy nhất. Cả hai đều hiệu quả hơn về các thao tác API so với việc gửi riêng từng yêu cầu biến đổi.
Các điểm hạn chế
Một số trường định cỡ và định vị không tương thích với một số loại phần tử trang. Bảng sau đâ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 định cỡ và định vị:
Trường | Hình dạng | Video | Bảng |
---|---|---|---|
Bản dịch | ✔ | ✔ | ✔ |
Quy mô | ✔ | ✔ | Không** |
Shear (Làm xiên) | ✔ | Không | Không |
Để cập nhật kích thước hàng và cột của bảng, hãy sử dụng UpdateTableRowPropertiesRequest
và UpdateTableColumnPropertiesRequest
.
Tất cả các trường định cỡ và định vị có thể cho ra kết quả không mong muốn nếu phần tử trang bị cắt. Mọi hạn chế đều có thể thay đổi. Để biết thông tin hiện tại, hãy xem API Google Trang trình bày.
Giá trị được tái cấu trúc
Khi tạo một phần tử trang, bạn có thể chỉ định kích thước và biến đổi để cung cấp một kết quả trực quan nhất định. Tuy nhiên, Slides API có thể thay thế các giá trị bạn cung cấp bằng các giá trị khác có cùng giao diện. Nhìn chung, nếu bạn viết một kích thước bằng API, thì bạn không được đảm bảo sẽ nhận được cùng kích thước. Tuy nhiên, bạn sẽ nhận được kết quả tương tự nếu tính đến phép biến đổi.