Z tego przewodnika dowiesz się, jak ustawiać rozmiar i pozycję elementów strony za pomocą transformatorów afinistycznych. Omówienie przekształceń 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 wykonywać 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
RELATIVE
są mnożone przez dotychczasową macierz przekształcenia elementu (kolejność mnożenia ma znaczenie):
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ć:
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ć:
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 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ć: gdzie kąt obrotu (w radianach) jest mierzony od osi X w kierunku przeciwnym do ruchu wskazówek zegara:
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 matryca transformacji odbicia osi X i Y ma te formy:
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ł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 (górny lewy róg). Możesz jednak działać w układzie odniesienia samego elementu, na przykład obracać go wokół jego punktu środkowego.
Aby przekształcić element w ramce odniesienia, umieść go między 2 innymi tłumaczeniami: poprzednim T1
, który przesuwa środek elementu do punktu początkowego strony, oraz następnym T2
, który przesuwa element z powrotem do jego pierwotnej pozycji. Całą operację można wyrazić jako iloczyn macierzy:
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 wymiarów UpdateTableRowPropertiesRequest
i UpdateTableColumnPropertiesRequest
.
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 Google Slides API.
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 rzecz biorąc, jeśli za pomocą interfejsu API zapiszesz rozmiar, nie ma gwarancji, że zwrócony zostanie ten sam rozmiar. Jeśli jednak weźmiesz pod uwagę tę przekształcenie, powinieneś uzyskać takie same wyniki.