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 dùng khi chuyển đổi (di chuyển, xoay, chia tỷ lệ và cắt) các phần tử trang, đặc biệt tập trung vào phép biến đổi affine cơ bản và các thao tác của nó.

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

Kích thước hình ảnh và vị trí của một phần tử trang được kiểm soát bởi 2 thuộc tính: sizetransform. Kích thước mô tả kích thước lý tưởng hoặc tích hợp sẵn của phần tử trang đang được tạo. Phép biến đổi này chỉ định một ma trận biến đổi affine hai chiều chỉ định cách biến đổi một đối tượng ở kích thước tích hợp sẵn để có giao diện hình ảnh cuối cùng.

Sơ đồ về một hình dạng được kết xuất bằng phép biến đổi affin

Khi bạn chọn một thành phần 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 thành phần đó bằng ô điều khiển điều chỉnh, thì tức là bạn đang thực sự 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 sẽ cập nhật ma trận biến đổi của phần tử đó.

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

Ma trận số học mà bạn sử dụng để biến đổi và đổi kích thước các phần tử trang rất hiệu quả, nhưng có thể gây khó khăn lúc đầu; hầu hết trang này mô tả các phép tính này. Tuy nhiên, bạn có thể đơn giản hoá quy cách chuyển đổi và kích thước bằng phương pháp sau:

  1. Tạo các phần tử trang bằng giao diện người dùng của Trang trình bày.
  2. Điều chỉnh tỷ lệ các phần tử trang này theo ý muốn trong khi 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.

Đấy là đủ để 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 các phép tính biến đổi mà bạn có thể sử dụng để thao tác chi tiết với các thành phần của trang.

Ma trận biến đổi ffin

Ma trận biến đổi affine hai chiều thường được các thư viện đồ hoạ sử dụng để kiểm soát tỷ lệ, chế độ xoay, khả năng cắt, phản chiếu và dịch chuyển của các phần tử. Trong API Trang trình bày, phép 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 dùng trong dữ liệu biến đổi là:

translate_x Tham số dịch chỉ định vị trí (X,Y) ở 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ị của đ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 kích thước của một phần tử trên trang khi kết xuất. Đây là các hệ số nhân không có đơn vị; ví dụ: giá trị scale_x là 1, 5 mở rộng chiều rộng của phần tử thêm 50%.
scale_y
shear_x Các tham số cắt cũng không có đơn vị và kiểm soát độ nghiêng của một phần tử trang. Bạn có thể dùng các thông số điều chỉnh theo tỷ lệ và cắt cùng nhau để xoay phần tử trang.
shear_y

Bạn có thể tìm nhiều ví dụ trên web cho thấy cách ma trận biến đổi 2-D ả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 của phần tử. Ví dụ: nếu bạn xoay một nhóm chứa hình chữ nhật, thì giá trị trường transform của nhóm đó phản ánh chế độ xoay, nhưng giá trị trường transform của hình chữ nhật thì không.

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

Để xác định kích thước trực quan (hiển thị) của một phần tử trang, bạn phải xem xét cả kích thước và thuộc tính biến đổi. Bạn không thể xác định phần tử trang nào trong số 2 phần tử trang lớn hơn về mặt hình ảnh chỉ bằng cách so sánh các 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 ma trận biến đổi và tính toán kích thước được kết xuất.

Lập bản đồ cho 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 vectơ [x, y, 1] và sau đó thực hiện phép nhân ma trận. Hãy xem xét mục ánh xạ của một điểm p:

\[p' = Ap\]

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

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à kéo và điều chỉnh theo 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 affin để đạt được các kết quả cụ thể, hãy xem hướng dẫn về Kích thước và hình dạng vị trí.

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

Một số trường định kích thước và vị trí không tương thích với một số loại phần tử trang. 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 nhất định với các trường định kích thước và định vị.

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

** Để cập nhật các kích thước của hàng và cột trong bảng, hãy sử dụng UpdateTableRowPropertiesRequestUpdateTableColumnPropertiesRequest.

Tất cả các trường định kích thước và định vị có thể cho kết quả ngoài dự kiế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 cập nhật, hãy xem API Google Trang trình bày.