Istnieją 2 sposoby wyświetlania i zmiany rozmiaru oraz położenia element strony:
- Używanie funkcji pobierania i ustalania do określania rozmiaru i pozycji.
- Manipulowanie przekształceniem afinicznym za pomocą funkcji
getTransform()
isetTransform()
przy zachowaniu rozmiaru wewnętrznego.
Odczytywanie właściwości elementu strony
Jak widać na ilustracji, rozmiar i pozycja są mierzone w odniesieniu do ramka ograniczająca wyrenderowanego elementu strony, gdy nie jest on obrócony:
- Lewo i Góra: mierzone od lewego górnego rogu strony do
lewy górny róg nieobróconej ramki ograniczającej. Użyj
getLeft()
igetTop()
, aby odczytać wartości. - Szerokość i Wysokość: szerokość i wysokość nieobróconej ramki ograniczającej.
Użyj
getWidth()
igetHeight()
, aby odczytać wartości. - Obrót: obrót w prawo względem pionowej linii dookoła.
do środka ramki ograniczającej. Użyj
getRotation()
, aby odczytać wartość.
Wszystkie długości są mierzone w punktach (pkt). Obrót jest mierzony w stopniach (°).
Ustawianie właściwości elementu strony
Rozmiar i pozycję elementu strony możesz ustawić podczas jego tworzenia za pomocą
metodę wstawiania, taką jak insertShape()
. W przypadku istniejącego kształtu
rozmiar, położenie i obrót; możesz też ustawić skalowanie elementu na
lub odbić go wzdłuż jednej z krawędzi.
W momencie utworzenia
Podczas tworzenia elementu strony możesz podać informacje o pozycji i rozmiarze.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
Logger.log('Left: ' + shape.getLeft() + 'pt; Top: '
+ shape.getTop() + 'pt; Width: '
+ shape.getWidth() + 'pt; Height: '
+ shape.getHeight() + 'pt; Rotation: '
+ shape.getRotation() + ' degrees.');
Powyższy skrypt tworzy kształt na pierwszym slajdzie aktywnej prezentacji o określonej pozycji i rozmiarze oraz odczytuje informacje o położeniu i rozmiarze jego kształtu. Oczekiwany dziennik:
Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.
Rozmiar, położenie i obrót
Rozmiar i pozycję elementu strony możesz zmienić po jego utworzeniu:
- Użyj elementów
setLeft()
isetTop()
, aby ustawić pozycję lewego górnego rogu nieobróconej ramki ograniczającej. - Użyj tych elementów:
setWidth()
isetHeight()
, aby ustawić renderowaną szerokość i wysokość ograniczenia. . - Użyj funkcji
setRotation()
, aby ustawić obrót ramki ograniczającej w prawo wokół jej pomocy.
Następujący skrypt tworzy kształt na pierwszym slajdzie aktywnej prezentacji: używa elementów ustawiających, aby aktualizować swoją pozycję, rozmiar i obrót oraz odczytuje położenie i rozmiarze kształtu.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setLeft(100).setTop(200).setWidth(50).setHeight(60).setRotation(90);
Logger.log('Left: ' + shape.getLeft()
+ 'pt; Top: ' + shape.getTop()
+ 'pt; Width: ' + shape.getWidth()
+ 'pt; Height: ' + shape.getHeight()
+ 'pt; Rotation: ' + shape.getRotation() + '\u00B0.');
Oczekiwane dane wyjściowe tego skryptu w dzienniku:
Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.
Ustawienia rozmiaru, pozycji i rotacji mogą być używane w dowolnej kolejności i w dowolnej kombinacji. Zastąpienie trzeciego wiersza powyżej poniższym skryptem spowoduje taki sam efekt:
shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);
Skalowanie
Zamiast korzystać z setWidth()
i setHeight()
powyżej do ustawiania rozmiaru kształtu
do wartości bezwzględnej, scaleWidth()
i scaleHeight()
mogą być używane do rozciągania lub
ściśnięcie elementu strony za pomocą względnego współczynnika skalowania.
shape.scaleHeight(0.5).scaleWidth(2);
Poniższy rysunek pokazuje, jak działa powyższy kod na kwadratowym kształcie obróconym pod kątem 45°. Pamiętaj, że lewy górny róg ramki ograniczającej jest stały podczas skalowania.
Odbicie wzdłuż krawędzi
Argumenty w funkcjach scaleWidth()
i scaleHeight()
mogą być ujemne, aby można było
służy do odwrócenia elementu strony w pionie lub poziomie.
shape.scaleWidth(-1); // Flip horizontally along the left edge of the bounding box.
shape.scaleHeight(-1); // Flip vertically along the top edge of the bounding box.
Ilustracja poniżej pokazuje, jak działa kod w przypadku kształtu ustawionego pod kątem 45°. Pamiętaj, że element strony jest obrócony wzdłuż jednej z krawędzi ramki ograniczającej, ale nie w jej centrum.
Obrót linii
Podobnie jak w przypadku innych elementów strony obrót linii nie jest kątem pionowym
ale i obrót ramki ograniczającej. Gdy utworzysz linię z
w określonym punkcie początkowym i końcowym, jego obrót wynosi zawsze 0°. Przeciąganie
punkty końcowe linii w interfejsie Prezentacji Google zmieniają też jej kąt pionowy
jak rozmiar i położenie ramki ograniczającej, ale nie zmienia
i jej rotacji. Użycie funkcji setRotation()
powoduje obrócenie ramki ograniczającej linii, która
skutecznie zmienia jej kąt pionowy. W 2 wierszach
mają taki sam wizualny kąt pionowy, ale różne ramki ograniczające,
różnych rozmiarów, pozycji i obrotu.
Ograniczenia
Niektóre metody dobierania rozmiaru i pozycjonowania są niezgodne z niektórymi typami stron . W tabeli poniżej znajdziesz metody, które są niezgodne z określonych typów elementów strony.
Metody | Kształt | Wideo | Tabela |
---|---|---|---|
getHeight(), getWidth() | ✔ | ✔ | NO (zwraca wartość null) |
setHeight(), setWidth() | ✔ | ✔ | NIE |
setRotation() | ✔ | NIE | NIE |
scaleHeight(), scaleWidth() | ✔ | ✔ | NIE |
Wszystkie metody dobierania rozmiaru i pozycjonowania mogą dawać nieoczekiwane rezultaty, jeśli strona element ma ścięcie. Wszystkie ograniczenia mogą ulec zmianie. Sprawdź odniesienie: zawsze aktualne informacje.
Korzystanie z przekształceń afinicznych
Aby uzyskać zaawansowaną kontrolę, rozmiar i położenie elementu strony można też ustawić obliczane i korygowane przez swój nieodłączny (natywny) rozmiar i przekształcenie afiniczne.
Skrypt Google Apps Script ma podobny interfejs, w którym można korzystać z przekształcania afinansowego w interfejsie API Prezentacji Google.
- Aby przeczytać
artykuł wyjaśnia,
koncepcje przekształcenia afinacyjnego i wnioskowania o wyrenderowanym rozmiarze z elementu pierwotnego
(natywny) rozmiaru i przekształcenia elementów strony. W Apps Script użyj
getInherentWidth()
igetInherentHeight()
w przypadku natywnego rozmiaru strony elementów;getTransform()
dla przekształcenia afinacyjnego elementów strony.
- Aby napisać, ten element
w tym artykule znajdziesz opis
Jak określać rozmiar i pozycję elementów strony za pomocą przekształcenia afinacyjnego, aby osiągnąć
skalowanie, obrót, odbicie itp. W Apps Script użyj
setTransform()
, aby ustawić przekształcenie finansowe elementów strony (podobnie do tryb BEZWZGLĘDNY);preconcatenateTransform()
, aby wstępnie połączyć przekształcenie afinacyjne w bieżące przekształcenie elementów strony (podobne do trybu RELATIVE).
Skrypt poniżej tworzy kształt, ustawia jego przekształcenie, odczytuje jego rozmiar i odczytuje jego przekształcenie afiniczne.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setTransform(SlidesApp.newAffineTransformBuilder()
.setScaleX(2)
.setScaleY(1)
.setTranslateX(100)
.setTranslateY(200)
.build());
Logger.log('Inherent width: ' + shape.getInherentWidth()
+ 'pt; Inherent height: '
+ shape.getInherentHeight() + 'pt.');
Oczekiwane dane wyjściowe tego skryptu w dzienniku:
Inherent width: 236.2pt; Inherent height: 236.2pt.
Powstały kształt będzie miał następujące przekształcenie oraz wyrenderowany rozmiar i pozycję:
AffineTransform{scaleX=2.0, scaleY=1.0, shearX=0.0, shearY=0.0, translateX=100.0, translateY=200.0}
Left: 100pt; Top: 200pt; Width: 472.4pt; Height: 236.2pt; Rotation: 0°.