Rozmiar i pozycjonowanie elementów strony

Z tego przewodnika dowiesz się, jak ustawiać rozmiar i pozycję elementów strony za pomocą transformatorów afinistycznych. Ogólne informacje o przekształceniach afinistycznych znajdziesz w przewodniku po przekształceniach.

Przekształcanie elementów

Interfejs Slides API umożliwia zmianę położenia i skalowanie elementów na stronie. W tym celu musisz najpierw określić, jakiego typu przekształcenia należy zastosować, a potem zastosować to przekształcenie za pomocą metody presentations.batchUpdate zawierającej co najmniej 1 element UpdatePageElementTransformRequest.

Transformacje można stosować na 2 sposoby:applyModes:

  • ABSOLUTE transforms replace the element's existing transformation matrix. Wszystkie parametry pominięte w żądaniu aktualizacji transformacji 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ą lub skalują element strony z jego bieżącej pozycji. Przykładowo można przesunąć kształt o 100 punktów w lewo lub obrócić 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 transformacji elementu. Jeśli nie masz tych wartości, możesz je pobrać za pomocą żądania presentations.pages.get.

Tłumaczenie

Przeniesienie to po prostu przeniesienie elementu strony w inne miejsce na tej samej stronie. Bezwzględne przesunięcia przenoszą element do określonego punktu, a względne przesunięcia przenoszą element 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}$$

Gdy używasz żądania UpdatePageElementTransformRequest do przekształcenia 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'
  }
}

Skalowanie

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 transformacji RELATIVE, aby zmienić rozmiar elementu, ale może to też wpłynąć na wyrenderowane przesunięcie i skręcenie elementu. Aby zmienić rozmiar elementu bez wpływu na jego przesunięcie lub przekształcenie styczne, przenieś go 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ół początku strony. Aby obrócić element wokół jego środka lub innego punktu, przenieś go do tego układu odniesienia.

Komentarze

Odbicie lustrzane odzwierciedla element wzdłuż określonej linii lub osi. Podstawowa przekształcenia odwrotna odblaskowa oś 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ć tego formatu macierzy bezpośrednio jako transformacji RELATIVE, aby odzwierciedlić element, ale spowoduje to również jego przesunięcie. Aby odzwierciedlić element bez przekształceń, przenieś go do jego układu odniesienia.

Ramki odniesienia elementu

Zastosowanie podstawowej skali, odbicia lub obrotu bezpośrednio do elementu strony powoduje przekształcenie w układzie odniesienia strony. Na przykład rotacja podstawowa 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ń: poprzedniego T1, które przesuwa środek elementu do punktu początkowego strony, oraz następnego T2, które przesuwa element z powrotem do jego pierwotnej pozycji. Całą operację można wyrazić 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 przeliczyć wstępnie A' za pomocą mnożenia macierzy i zastosować wynik jako pojedynczą transformację ABSOLUTE. Możesz też wstępnie obliczyć wynik funkcji T2 * B * T1 i zastosować go jako pojedynczą transformację RELATIVE. Oba te rozwiązania są wydajniejsze pod względem operacji interfejsu API niż wysyłanie poszczególnych żądań przekształcenia.

Ograniczenia

Niektóre pola rozmiaru i pozycji 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 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 funkcji UpdateTableRowPropertiesRequestUpdateTableColumnPropertiesRequest.

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

Interfejs Slides API może przeformować Twoje wartości.

Podczas tworzenia elementu strony możesz określić jego rozmiar i transformację, aby uzyskać określony efekt wizualny. Interfejs API może jednak zastąpić podane wartości innymi, które dają ten sam efekt wizualny. Ogólnie, jeśli za pomocą interfejsu API zapiszesz rozmiar, nie masz gwarancji, że zwrócony zostanie ten sam rozmiar. Jeśli jednak uwzględnisz tę przekształcenie, powinieneś uzyskać takie same wyniki.