Ten przewodnik wyjaśnia, jak określać rozmiar i położenie elementów strony za pomocą przekształceń afinicznych w Google Slides API. Wprowadzenie do przekształceń afinicznych znajdziesz w przewodniku koncepcyjnym Przekształcenia i elementy strony.
Przekształcanie elementów
Interfejs Slides API umożliwia zmianę położenia i skalowanie elementów na stronie. Aby to zrobić, najpierw określ, jaki rodzaj przekształcenia należy zastosować, a następnie zastosuj to przekształcenie za pomocą metody presentations.batchUpdate()
zawierającej co najmniej 1 element UpdatePageElementTransformRequest
.
Przekształcenia można przeprowadzać za pomocą ApplyMode
:
ABSOLUTE
przekształca zastępuje istniejącą macierz przekształcenia elementu. Wszystkie parametry pominięte w żądaniu aktualizacji przekształcenia są ustawiane na zero.Przekształcenia
RELATIVE
są mnożone przez istniejącą macierz przekształceń elementu (kolejność mnożenia ma znaczenie):
Przekształcenia względne przesuwają lub skalują element strony z jego bieżącego położenia. Na przykład przesuwają kształt o 100 punktów w lewo lub obracają go o 40 stopni. Przekształcenia bezwzględne odrzucają istniejące informacje o pozycji i skali, np. przenoszą kształt na środek strony lub skalują go do określonej szerokości.
Złożone przekształcenia można zwykle wyrazić jako sekwencję prostszych przekształceń. Wstępne obliczenie przekształcenia – połączenie wielu przekształceń za pomocą mnożenia macierzy – może często 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
Przesunięcie to przeniesienie elementu strony w nowe miejsce na tej samej stronie. Przesunięcia bezwzględne powodują przeniesienie elementu do określonego punktu, a przesunięcia względne – przesunięcie elementu o określoną odległość.
Podstawowa macierz przekształceń translacji ma postać:
Gdy używasz funkcji
UpdatePageElementTransformRequest
do przesunięcia elementu (bez zmiany jego rozmiaru, ścinania ani 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 to rozciąganie lub ściskanie elementu wzdłuż osi X lub Y w celu zmiany jego rozmiaru. Podstawowa macierz przekształceń skalowania ma postać:
Możesz użyć tej formy macierzy bezpośrednio jako RELATIVE
transformacji, aby zmienić rozmiar elementu, ale może to również wpłynąć na jego renderowane ścinanie i przesunięcie.
Aby skalować element bez wpływu na jego ścinanie lub przesuwanie, przejdź do jego układu odniesienia.
Obrót
Przekształcenia obrotu obracają element strony wokół punktu przy użyciu parametrów skalowania i ścinania. Podstawowa macierz przekształcenia 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 postaci macierzy bezpośrednio jako RELATIVE
transformacji, aby obrócić element, ale spowoduje to obrót elementu wokół punktu początkowego strony. Aby obrócić element wokół jego środka lub innego punktu, przesuń go do ramki odniesienia.
Komentarze
Odbicie lustrzane to element odbity wzdłuż określonej linii lub osi. Podstawowa macierz przekształcenia odbicia względem osi X i Y ma te postacie:
Podobnie jak w przypadku skalowania, możesz użyć tej postaci macierzy bezpośrednio jako RELATIVE
transformacjiRELATIVE
, aby odbić element, ale spowoduje to również jego przesunięcie. Aby odzwierciedlić element bez tłumaczenia, przesuń go do ramki odniesienia elementu.
Ramki odniesienia elementu
Zastosowanie podstawowej transformacji skalowania, obrotu lub odbicia bezpośrednio do elementu strony powoduje transformację w układzie odniesienia strony. Na przykład podstawowe obracanie obraca element wokół punktu początkowego strony (lewego górnego rogu). Możesz jednak pracować w układzie odniesienia elementu, np. obracać go wokół jego środka.
Aby przekształcić element w jego własnym układzie odniesienia, umieść go między dwoma innymi przekształceniami: poprzedzającym przekształceniem T1
, które przesuwa środek elementu do początku strony, i następującym przekształceniem T2
, które przesuwa element z powrotem do jego pierwotnego położenia. Całą operację można wyrazić jako iloczyn macierzy:
Możesz też przełączyć się na inne układy odniesienia, przenosząc do początku inne punkty. Te punkty stają się środkiem nowego układu odniesienia.
Każdą z tych transformacji można wykonać osobno jako sekwencyjne żądania transformacji RELATIVE
. Najlepiej wstępnie obliczyć A'
powyższe wartości za pomocą mnożenia macierzy i zastosować wynik jako pojedynczą ABSOLUTE
transformację. Możesz też wstępnie obliczyć iloczyn T2 * B * T1
i zastosować go jako pojedyncze przekształcenie RELATIVE
. Obie te metody są bardziej wydajne pod względem operacji API niż wysyłanie żądań przekształcenia pojedynczo.
Ograniczenia
Niektóre pola rozmiaru i położenia 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** |
Ścinanie | ✔ | Nie | Nie |
Aby zaktualizować wymiary wiersza i kolumny tabeli, użyj
UpdateTableRowPropertiesRequest
i
UpdateTableColumnPropertiesRequest
.
Wszystkie pola rozmiaru i położenia mogą dawać nieoczekiwane wyniki, jeśli element strony jest poddany ścinaniu. Wszystkie ograniczenia mogą ulec zmianie. Aktualne informacje znajdziesz w artykule Interfejs API Prezentacji Google.
Przekształcone wartości
Podczas tworzenia elementu strony możesz określić rozmiar i przekształcić go, aby uzyskać określony efekt wizualny. Jednak interfejs Slides API może zastąpić podane wartości innymi, które dają ten sam efekt wizualny. Ogólnie rzecz biorąc, jeśli zapiszesz rozmiar za pomocą interfejsu API, nie masz gwarancji, że otrzymasz ten sam rozmiar. Jeśli jednak weźmiesz pod uwagę przekształcenie, wyniki powinny być takie same.