Rozmiar i położenie elementów strony

Z tego przewodnika dowiesz się, jak określać rozmiar i położenie elementów strony za pomocą przekształceń afinicznych w interfejsie 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ą presentations.batchUpdate() metody zawierającej co najmniej 1 UpdatePageElementTransformRequest element.

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

  • Przekształcenia ABSOLUTE zastępują istniejącą macierz przekształcenia elementu. Wszystkie parametry pominięte w żądaniu aktualizacji przekształcenia są ustawiane na zero.

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

$$A' = BA$$

Przekształcenia względne przesuwają lub skalują element strony z jego bieżącego położenia. Możesz na przykład przesunąć kształt o 100 punktów w lewo lub obrócić go o 40 stopni. Przekształcenia bezwzględne odrzucają dotychczasowe informacje o położeniu i skali. Możesz na przykład przesunąć kształt na środek strony lub zmienić jego rozmiar na określoną szerokość.

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ć obciążenie.

W przypadku niektórych operacji musisz znać dotychczasowe 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 czynność polegająca na przeniesieniu elementu strony w nowe miejsce na tej samej stronie. Przesunięcia bezwzględne przenoszą element do określonego punktu, a przesunięcia względne przesuwają element o określoną odległość.

Podstawowa macierz przekształcenia przesunięcia ma postać:

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

Gdy używasz UpdatePageElementTransformRequest do przesunięcia elementu (bez zmiany jego rozmiaru, pochylenia lub orientacji), możesz użyć jednej z tych 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 czynność polegająca 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}$$

Możesz użyć tej postaci macierzy bezpośrednio jako przekształcenia RELATIVE, aby zmienić rozmiar elementu, ale może to też wpłynąć na jego renderowane pochylenie i przesunięcie. Aby przeskalować element bez wpływu na jego pochylenie lub przesunięcie, przejdź do jego układu odniesienia.

Obrót

Przekształcenia obrotu obracają element strony wokół punktu za pomocą parametrów skalowania i pochylenia. Podstawowa macierz przekształcenia obrotu ma postać, w której kąt obrotu (w radianach) jest mierzony od osi X w kierunku przeciwnym do ruchu wskazówek zegara:

$$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 postaci macierzy bezpośrednio jako przekształcenia 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, przejdź do jego układu odniesienia frame.

Komentarze

Odbicie tworzy lustrzane odbicie elementu względem określonej linii lub osi. Podstawowa macierz przekształcenia odbicia względem osi X i Y ma postać:

$$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 postaci macierzy bezpośrednio jako przekształcenia RELATIVE, aby odbić element, ale spowoduje to też jego przesunięcie. Aby odbić element bez przesunięcia, przejdź do jego układu odniesienia.

Układy odniesienia elementów

Zastosowanie podstawowego przekształcenia skalowania, obrotu lub odbicia bezpośrednio do elementu strony powoduje przekształcenie w układzie odniesienia strony. Na przykład podstawowy obrót obraca element wokół początku strony (lewego górnego rogu). Możesz jednak pracować w układzie odniesienia elementu, np. aby obrócić element wokół jego punktu środkowego.

Aby przekształcić element w jego własnym układzie odniesienia, umieść go między 2 innymi przesunięciami: poprzedzającym przesunięciem T1, które przenosi środek elementu do początku strony, oraz następującym przesunięciem T2, które przenosi element z powrotem do jego pierwotnego położenia. Pełną 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, przesuwając do początku inne punkty. Te punkty stają się środkiem nowego układu odniesienia.

Każde z tych przekształceń można wykonać osobno jako sekwencyjne żądania przekształcenia RELATIVE. Najlepiej wstępnie obliczyć A' powyżej za pomocą mnożenia macierzy i zastosować wynik jako pojedyncze ABSOLUTE przekształcenie. 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 osobno.

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
Przesunięcie
Skaluj Nie**
Pochylenie 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 pochylony. Wszystkie ograniczenia mogą ulec zmianie. Aktualne informacje znajdziesz w dokumentacji interfejsu Google Slides API.

Zmienione wartości

Podczas tworzenia elementu strony możesz określić rozmiar i przekształcenie, które zapewniają określony efekt wizualny. Interfejs Slides API może jednak 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. Powinieneś jednak uzyskać te same wyniki, jeśli weźmiesz pod uwagę przekształcenie.