Przekształcenia i elementy strony

W tym przewodniku opisujemy podstawowe pojęcia związane z przekształcaniem (tj. przenoszeniem, obrotem, skalowaniem i ścinaniem), ze szczególnym uwzględnieniem przekształcenia afinicznego i jego operacji.

Więcej informacji o korzystaniu z przekształceń afinicznych w celu uzyskania konkretnych wyników znajdziesz w przewodniku kształtów rozmiaru i położenia.

Rozmiar i położenie elementu strony zależy od 2 właściwości: size i transform. Rozmiar określa idealny lub wbudowany rozmiar tworzonego elementu strony. Przekształcenie określa dwuwymiarową macierz przekształcenia afinicznego, która określa sposób przekształcania obiektu o wbudowanym rozmiarze w celu uzyskania ostatecznego wyglądu.

Diagram kształtu wyrenderowanego przez przekształcenie afiniczne

Gdy wybierzesz element strony w interfejsie Prezentacji i zmienisz jego rozmiar za pomocą uchwytów dostosowywania, faktycznie aktualizujesz tę macierz przekształceń. Przesunięcie elementu na stronie lub jego obrót powoduje też aktualizację macierzy przekształceń elementu.

Pierwsze kroki z interfejsem Prezentacji

Analityka macierzysta, której używasz do przekształcania elementów strony i zmieniania jej rozmiaru, jest bardzo skuteczna, ale może początkowo sprawiać trudności. Na tej stronie znajdziesz opis tych obliczeń. Możesz jednak uprościć specyfikację przekształceń i rozmiarów, korzystając z tego rozwiązania:

  1. Tworzenie elementów strony za pomocą interfejsu Prezentacji.
  2. Skaluj te elementy strony odpowiednio do swoich potrzeb, nadal korzystając z interfejsu Prezentacji.
  3. Użyj metody get, aby odczytać rozmiar i przekształcenie tych elementów.

Na dobry początek – w dalszej części tego przewodnika znajdziesz omówienie obliczeń przekształcenia, za pomocą których możesz bardziej szczegółowo manipulować elementami stron.

Macierze przekształcenia afiny

Dwuwymiarowe macierze przekształcenia afiniczne są powszechnie stosowane w bibliotekach graficznych do kontrolowania skali, obrotu, wycinania, odbicia i przesunięcia elementów. W interfejsie Prezentacji API przekształcenie elementu strony jest prezentowane w postaci macierzy 3 x 3:

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

Parametry użyte w przekształceniu:

translate_x Parametry przesunięcia określają położenie (X,Y) lewego górnego rogu elementu strony względem lewego górnego rogu strony. Położenie względne możesz określić za pomocą jednostek punktów (pt) lub angielskich jednostek metrycznych (EMU).
translate_y
scale_x Parametry skali określają rozmiar elementu strony podczas renderowania. Są to współczynniki mnożone bez jednostek.Na przykład wartość scale_x o wartości 1, 5 zwiększa szerokość elementu o 50%.
scale_y
shear_x Parametry ścinania nie są jednostkami i kontrolują przechylenie elementu strony. Parametrów skali i ścinania można używać jednocześnie do obracania elementu strony.
shear_y

W internecie znajdziesz wiele przykładów pokazujących, jak macierze przekształceń 2D wpływają na renderowanie obiektów graficznych.

Macierz przekształcenia odnosi się do grupy lub strony, która zawiera dany element. Jeśli na przykład obrócisz grupę zawierającą prostokąt, wartości jej pola transform będą odzwierciedlać rotację, ale wartości pola transform prostokąta już nie.

Obliczam rozmiar elementu wizualnego

Aby określić rozmiar wizualny (wyrenderowany) elementu strony, musisz wziąć pod uwagę zarówno rozmiar, jak i właściwości przekształcenia. Aby określić, który z 2 elementów strony jest wizualnie większy, wystarczy porównać ich właściwości rozmiaru: musisz zmapować granice elementów za pomocą macierzy przekształcenia i obliczyć wyrenderowany rozmiar.

Mapowanie punktu

Aby zmapować określony punkt za pomocą macierzy przekształcenia, przekonwertuj punkt (x, y) na wektor [x, y, 1], a potem wykonaj mnożenie macierzy. Rozważ mapowanie punktu p:

\[p' = Ap\]

Wtedy:

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

Dlatego współrzędne nowego punktu p' są następujące:

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

Obliczanie granicy

Aby określić wyrenderowany rozmiar ramki ograniczającej elementu po przekształceniu ścinanym i skalowanym, użyj polecenia:

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

Więcej informacji o korzystaniu z przekształceń afinicznych w celu uzyskania konkretnych wyników znajdziesz w przewodniku kształtów rozmiaru i położenia.

Ograniczenia

Niektóre pola określania rozmiaru i pozycjonowania są niezgodne z niektórymi typami elementów strony. Tabela poniżej zawiera podsumowanie zgodności niektórych elementów strony z polami rozmiaru i pozycjonowania.

Pole Kształt Wideo Tabela
Tłumaczenie
Skala Nie**
Ścięcie Nie Nie

** Aby zaktualizować wymiary wierszy i kolumn tabeli, użyj UpdateTableRowPropertiesRequest i UpdateTableColumnPropertiesRequest.

Wszystkie pola rozmiarów i pozycjonowania mogą dawać nieoczekiwane wyniki, jeśli w elemencie strony występują ścinięcia. Wszystkie ograniczenia mogą ulec zmianie. Aktualne informacje znajdziesz w artykule o interfejsie API Prezentacji Google.