Rozmiar i położenie elementów strony

Z tego przewodnika dowiesz się, jak ustawiać rozmiar i pozycję elementów strony za pomocą transformat afinitek za pomocą interfejsu Google Slides API. Aby zapoznać się z ogólnymi informacjami na temat przekształceń afinistycznych, przeczytaj przewodnik po przekształceniach i elementach strony.

Przekształcanie elementów

Interfejs Slides API umożliwia zmianę położenia i skalowanie elementów na stronie. Aby to zrobić, musisz najpierw określić, jakiej transformacji należy użyć, a potem zastosować ją za pomocą metody presentations.batchUpdate() zawierającej co najmniej 1 element UpdatePageElementTransformRequest.

Przekształcenia można wykonywać za pomocą ApplyMode:

  • ABSOLUTE transforms replace the element's existing transformation matrix. Wszystkie parametry pominięte w żądaniu aktualizacji przekształcenia są ustawiane na 0.

  • Przekształcenia RELATIVEmnożone przez dotychczasową macierz przekształcenia elementu (kolejność mnożenia ma znaczenie):

$$A' = BA$$

Transformacje względne przesuwają element strony lub zmieniają jego skalę względem jego bieżącej pozycji. Przykładowo przesunięcie kształtu o 100 punktów w lewo lub obrócenie go o 40 stopni. Transformacje bezwzględne ignorują istniejące informacje o pozycji i skali, np. przenoszą kształt na środek strony lub zmieniają jego szerokość.

Złożone przekształcenia można zwykle wyrazić jako sekwencję prostszych przekształceń. Wstępny obliczenie przekształcenia, czyli połączenie wielu przekształceń za pomocą mnożenia macierzy, często pozwala zmniejszyć narzut.

W przypadku niektórych operacji musisz znać istniejące parametry przekształcenia elementu. Jeśli nie masz tych wartości, możesz je pobrać za pomocą metody presentations.pages.get().

Tłumaczenie

Przeniesienie polega na przeniesieniu elementu strony w nowe miejsce na tej samej stronie. Przesunięcia bezwzględne przenoszą element do określonego punktu, a względne – o określoną odległość.

Podstawowa macierz przekształceń przesunięcia ma postać:

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

Jeśli używasz UpdatePageElementTransformRequest do przesunięcia elementu (bez zmiany jego rozmiaru, zniekształcenia lub orientacji), możesz użyć jednej z tych struktur AffineTransform:

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

Skaluj

Skalowanie polega na rozciąganiu lub ściskaniu elementu wzdłuż osi X lub Y w celu zmiany jego rozmiaru. Podstawowa macierz przekształcenia skalowania ma postać:

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

Tę formę macierzy możesz użyć bezpośrednio jako transformację RELATIVE, aby zmienić rozmiar elementu, ale może to też wpłynąć na renderowanie przesunięcia i skręcenia elementu. Aby zmienić rozmiar elementu bez wpływu na jego skręcenie lub przesunięcie, przenieś się do jego układu odniesienia.

Obrót

Transformacje obrotu obracają element strony wokół punktu za pomocą parametrów skalowania i wypaczenia. Podstawowa matryca transformacji obrotu ma postać:

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

Podobnie jak w przypadku skalowania, możesz użyć tej formy macierzy bezpośrednio jako transformacji RELATIVE, aby obrócić element, ale spowoduje to obrócenie elementu wokół punktu początkowego strony. Aby obrócić element wokół jego środka lub innego punktu, przenieś się do jego układu odniesienia.

Komentarze

Odbicie lustrzane odzwierciedla element wzdłuż określonej linii lub osi. Podstawowa przekształcenie symetrii w osią x i y ma następujące formy:

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

Podobnie jak w przypadku skalowania, możesz użyć tej formy macierzy bezpośrednio jako transformacji RELATIVE, aby odzwierciedlić element, ale spowoduje to również jego przesunięcie. Aby odzwierciedlić element bez przekształcania, przenieś go do jego klatki odniesienia.

Ramki odniesienia elementu

Zastosowanie podstawowej skali, obrotu lub odbicia bezpośrednio do elementu strony powoduje przekształcenie w układzie odniesienia strony. Na przykład obrót podstawowy obraca element wokół punktu początkowego strony (lewy górny róg). Możesz jednak działać w układzie odniesienia elementu, na przykład obracać go wokół jego punktu środkowego.

Aby przekształcić element w ramce odniesienia, użyj dwóch innych tłumaczeń: poprzedzającego tłumaczenia T1, które przesuwa element na środek strony, oraz następnego tłumaczenia T2, które przesuwa element z powrotem do pierwotnej pozycji. Pełna operacja może być wyrażona jako iloczyn macierzy:

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

Możesz też przełączyć się na inne układy odniesienia, przenosząc różne punkty do początku układu. Te punkty stają się środkiem nowego układu odniesienia.

Każdą z tych przekształceń można wykonać osobno jako sekwencję RELATIVE. Najlepiej jest obliczyć wstępnie A' za pomocą mnożenia macierzy i zastosować wynik jako pojedynczą transformację ABSOLUTE. Możesz też wstępnie obliczyć produkt T2 * B * T1 i zastosować go jako pojedynczą transformację RELATIVE. Oba te rozwiązania są bardziej wydajne pod względem operacji interfejsu API niż wysyłanie żądań przekształcania pojedynczo.

Ograniczenia

Niektóre pola rozmiaru i pozycji są niezgodne z niektórymi typami elementów strony. W tabeli poniżej znajdziesz podsumowanie zgodności niektórych elementów strony z polami rozmiaru i położenia:

Pole Kształt Wideo Tabela
Tłumaczenie
Skala Nie**
Szyłka Nie Nie

Aby zaktualizować wymiary wierszy i kolumn tabeli, użyj wymiarów UpdateTableRowPropertiesRequestUpdateTableColumnPropertiesRequest.

Jeśli element strony ma przesunięcie, wszystkie pola rozmiaru i pozycji mogą dać nieoczekiwane wyniki. Wszystkie ograniczenia mogą ulec zmianie. Najnowsze informacje znajdziesz w artykule Interfejs API Prezentacji Google.

Przekształcone wartości

Podczas tworzenia elementu strony możesz określić jego rozmiar i transformację, aby uzyskać określony efekt wizualny. Interfejs API Slides może jednak zastąpić podane przez Ciebie wartości innymi, które dają ten sam efekt wizualny. Ogólnie rzecz biorąc, jeśli za pomocą interfejsu API określisz rozmiar, nie ma gwarancji, że zwrócony rozmiar będzie taki sam. Jednak jeśli zastosujesz tę przekształcenie w koncie, powinieneś uzyskać te same wyniki.