Biến đổi và phần tử trang

Hướng dẫn này mô tả các khái niệm cơ bản được dùng trong chuyển đổi (tức là di chuyển, xoay, chia tỷ lệ và cắt) các phần tử trang, đặc biệt đối với biến đổi affine cơ bản và các phép toán của nó.

Để biết thêm về cách sử dụng phép biến đổi affine để đạt được kết quả cụ thể, xem hướng dẫn Hình dạng kích thước và vị trí.

Kích thước hình ảnh và vị trí của phần tử trang được kiểm soát bởi thuộc tính: kích thướcbiến đổi. Kích thước này mô tả kích thước lý tưởng hoặc kích thước tích hợp sẵn của phần tử trang đang được tạo. Biến đổi xác định giá trị hai chiều ma trận biến đổi affin chỉ định cách biến đổi một đối tượng ở kích thước tích hợp để dẫn đến hình ảnh hoàn thiện.

Sơ đồ hình dạng kết xuất bằng phép biến đổi affin

Khi bạn chọn một phần tử trang trong giao diện người dùng Trang trình bày và thay đổi kích thước hình ảnh của phần tử đó bằng cách sử dụng ô điều khiển điều chỉnh, thì thực ra bạn đang cập nhật ma trận biến đổi này. Việc di chuyển phần tử trên trang hoặc xoay phần tử cũng cập nhật phần tử biến đổi ma trận.

Sử dụng giao diện người dùng của Trang trình bày để bắt đầu

Số học ma trận mà bạn sử dụng để biến đổi và đổi kích thước các phần tử trang là rất mạnh mẽ, nhưng thoạt đầu có thể gây choáng ngợp; hầu hết trang này mô tả tính toán. Tuy nhiên, bạn có thể đơn giản hoá quy cách của phép biến đổi và bằng phương pháp sau:

  1. Tạo thành phần trang bằng giao diện người dùng của Trang trình bày.
  2. Định vị tỷ lệ các phần tử trang này theo ý muốn, vẫn sử dụng giao diện người dùng Trang trình bày.
  3. Đọc kích thước và biến đổi của các phần tử đó bằng phương thức get.

Như vậy có thể đủ để giúp bạn bắt đầu; phần còn lại của hướng dẫn này giải thích biến đổi các phép tính mà bạn có thể dùng để thao tác với các phần tử trang một cách chi tiết.

Ma trận biến đổi affine

Ma trận biến đổi affin hai chiều thường được dùng trong đồ hoạ để kiểm soát tỷ lệ, xoay, cắt, phản chiếu và dịch phần tử. Trong API Trang trình bày, sự biến đổi của một phần tử trang được biểu thị dưới dạng ma trận 3x3:

$$A=\begin{bmatrix} scale\_x & shear\_x & translate\_x\\ shear\_y & scale\_y & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

Các tham số được sử dụng trong phép biến đổi là:

translate_x Tham số dịch chỉ định vị trí (X,Y) của góc trên bên trái của phần tử trang, so với góc trên bên trái của trang. Bạn chỉ định vị trí tương đối bằng cách sử dụng Đơn vị một trong hai điểm (pt) hoặc đơn vị hệ mét tiếng Anh (EMU).
translate_y
scale_x Tham số tỷ lệ kiểm soát độ lớn của một phần tử trang khi kết xuất. Đây là các thừa số nhân không đơn vị; ví dụ: scale_x 1,5 sẽ phóng to chiều rộng của phần tử thêm 50%.
scale_y
shear_x Tham số cắt cũng không có đơn vị và kiểm soát độ nghiêng của trang . Bạn có thể dùng đồng thời tham số tỷ lệ và tham số cắt để xoay trang .
shear_y

Bạn có thể tìm thấy nhiều ví dụ trên web cho thấy cách ma trận biến đổi 2D ảnh hưởng đến việc hiển thị đối tượng đồ hoạ.

Ma trận biến đổi tương ứng với nhóm chứa hoặc trang chứa . Ví dụ: nếu bạn xoay một nhóm chứa một hình chữ nhật, transform của nhóm các giá trị của trường phản ánh chế độ xoay, nhưng transform của hình chữ nhật thì không có.

Đang tính toán kích thước hình ảnh

Để xác định kích thước trực quan (được hiển thị) của một phần tử trang, bạn phải xem xét cả kích thước lẫn biến đổi thuộc tính. Bạn không thể xác định hai phần tử trang lớn hơn về mặt trực quan chỉ bằng cách so sánh thuộc tính kích thước của chúng: bạn phải ánh xạ ranh giới của phần tử bằng cách sử dụng ma trận biến đổi và tính toán kích thước được hiển thị.

Ánh xạ một điểm

Để ánh xạ một điểm cụ thể bằng ma trận biến đổi, hãy chuyển đổi điểm (x, y) thành một vectơ [x, y, 1] rồi thực hiện phép nhân ma trận. Cân nhắc ánh xạ một điểm p:

\[p' = Ap\]

Điều này sẽ trở thành:

$$\begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix} =\begin{bmatrix} scale\_x & shear\_x & translate\_x\\ shear\_y & scale\_y & translate\_y\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix}$$

Do đó, toạ độ của điểm mới p' là:

$$x' = (scale\_x \times x) + (shear\_x \times y) + translate\_x\\ y' = (scale\_y \times y) + (shear\_y \times x) + translate\_y$$

Đang tính toán ranh giới

Để xác định kích thước kết xuất của hộp giới hạn của một phần tử sau khi biến đổi mà có thể cắt và chia tỷ lệ, hãy sử dụng:

$$width' = (scale\_x \times width) + (shear\_x \times height)\\ height' = (scale\_y \times height) + (shear\_y \times width)$$

Để biết thêm về cách sử dụng phép biến đổi affine để đạt được kết quả cụ thể, xem hướng dẫn Hình dạng kích thước và vị trí.

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.