Rozmiary i położenie elementów strony

Istnieją 2 sposoby wyświetlania i zmiany rozmiaru oraz położenia element strony:

  1. Używanie funkcji pobierania i ustalania do określania rozmiaru i pozycji.
  2. Manipulowanie przekształceniem afinicznym za pomocą funkcji getTransform() i setTransform() przy zachowaniu rozmiaru wewnętrznego.

Odczytywanie właściwości elementu strony

Dobieranie i obracanie

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() i getTop(), aby odczytać wartości.
  • Szerokość i Wysokość: szerokość i wysokość nieobróconej ramki ograniczającej. Użyj getWidth() i getHeight(), 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() i setTop(), aby ustawić pozycję lewego górnego rogu nieobróconej ramki ograniczającej.
  • Użyj tych elementów: setWidth() i setHeight(), 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.

Skalowanie slajdów

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.

Odczucia w Prezentacjach

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() i getInherentHeight() 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°.