Rozmiary i położenie elementów strony

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Rozmiar i pozycję elementu strony można uzyskać i zmienić na 2 sposoby:

  1. Używanie funkcji gett i Setter w celu określenia rozmiaru i pozycji.
  2. Manipulowanie przekształceniem o przypadku za pomocą funkcji getTransform() i setTransform() przy zachowaniu nieodłącznego rozmiaru.

Właściwości elementu strony z czytaniem

Rozmiary i obroty

Jak widać na rysunku, rozmiar i pozycja są mierzone w przypadku ramki ograniczenia wyrenderowanego elementu strony, który nie ma rotacji:

  • Lewo i Góra: pomiar od lewego górnego rogu strony do lewego górnego rogu nieobróconego pola ograniczenia. Aby odczytać wartości, użyj getLeft() i getTop().
  • Szerokość i Wysokość: szerokość i wysokość nieobróconego pola ograniczenia. Aby odczytać wartości, użyj funkcji getWidth() i getHeight().
  • Obrót: obrót w prawo zgodnie z pionową linią wokół ramki granicznej. Aby odczytać wartość, użyj funkcji getRotation().

Wszystkie długości są mierzone w punktach (pt). Obrót jest mierzony w stopniach (°).

Ustawianie właściwości elementu strony

Rozmiar i pozycję elementu strony możesz ustawić podczas jego tworzenia, korzystając z metody wstawiania, takiej jak insertShape(). W przypadku istniejącego kształtu możesz ustawić rozmiar, pozycję i obrót elementu. Możesz też ustawić skalowanie elementu, aby zmienić jego rozmiar lub odzwierciedlić je 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 pozycji i rozmiarze tego kształtu. Oczekiwany dziennik to:

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 zaktualizować po jego utworzeniu:

  • Użyj elementów setLeft() i setTop(), aby ustawić pozycję lewego górnego rogu nieobróconego pola ograniczenia.
  • Użyj setWidth() i setHeight(), aby ustawić wyrenderowaną szerokość i wysokość ramki granicznej.
  • Użyj wartości setRotation(), aby ustawić obrót ramki ograniczającej w prawo na środku.

Ten skrypt tworzy kształt na pierwszym slajdzie aktywnej prezentacji, używa seterów do aktualizowania jego pozycji, rozmiaru i obrotu, a także odczytuje informacje o pozycji 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.');

Poniżej znajdziesz oczekiwane dane wyjściowe dziennika z tego skryptu:

Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.

Ustawienia rozmiaru, położenia i rotacji możesz używać w dowolnej kolejności lub w dowolnej kombinacji. Zastąpienie trzeciego wiersza poniższym skryptem da taki wynik:

shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);

Skalowanie

Zamiast używać właściwości setWidth() i setHeight() powyżej, by ustawić rozmiar kształtu na wartość bezwzględną, możesz użyć scaleWidth() i scaleHeight(), by rozciągnąć lub ścisnąć element strony przy względnym współczynniku skalowania.

shape.scaleHeight(0.5).scaleWidth(2);

Rysunek poniżej pokazuje, jak działa kod na obróconym kształcie o 45°. Pamiętaj, że górny lewy róg ramki ograniczającej jest stały.

Skalowanie slajdów

Odbicie wzdłuż krawędzi

Argumenty w parametrach scaleWidth() i scaleHeight() mogą być ujemne, aby można było ich odwrócić element w poziomie lub w pionie.

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 kod działa na obróconym kształcie o 45°. Element strony znajduje się przy jednej z krawędzi ramki ograniczającej, ale nie w jej środku.

Odbicie Prezentacji

Obrót linii

Tak jak w przypadku innych elementów strony, obrót linii nie jest pionowy pod kątem linii, ale podlega obramowaniu ramki granicznej. Gdy utworzysz linię z określonymi punktami początkowymi i końcowym, jej obrót będzie zawsze wynosić 0°. Przeciąganie punktów końcowych w interfejsie Prezentacji Google zmienia kąt pionowy, a także rozmiar i położenie ramki ograniczającej, ale nie zmienia jej obrotu. Ruch setRotation() powoduje obracanie ramki ograniczającej linię, co powoduje zmianę kąta obrotu. Dzięki temu 2 linie mogą mieć ten sam kąt pionowy, ale różne ramki ograniczające, a tym samym różne wartości rozmiaru, położenia i obrotu.

Ograniczenia

Niektóre metody zmiany rozmiaru i pozycji są niezgodne z niektórymi typami elementów strony. Tabela poniżej zawiera podsumowanie metod niezgodnych z określonymi typami elementów strony.

Metody Kształt Film Tabela
getHeight(), getWidth() NIE (zwraca wartość null)
setHeight(), setWidth() NIE
setRotation(), NIE NIE
scaleHeight(), skaluj szerokość() NIE

Jeśli metoda przesuwania lub pozycjonowania elementu zostanie przycięty, może to spowodować nieoczekiwane wyniki. Wszystkie ograniczenia mogą ulec zmianie. Aktualne informacje znajdziesz w dokumentacji.

Przekształcanie afinacji

Aby uzyskać większą kontrolę, rozmiar i położenie elementu strony możesz też obliczać i dostosowywać za pomocą rozmiaru nienaruszonego (natywnego) i przekształcenia koligacji.

Skrypt usługi Google Apps zapewnia interfejs podobny do interfejsu affine przekształcenia mieszczący się w interfejsie Google Prezentacje API.

  • Przeczytaj ten artykuł, aby dowiedzieć się, czym są przekształcenia o postaci koligacji i jak wyciągać z nich rozmiar nieodłączny ( natywny) i przekształcać elementy strony. W języku Apps Script użyj
    • getInherentWidth() i getInherentHeight() w przypadku rozmiaru natywnego elementów strony;
    • getTransform() – transformacja elementów strony.
  • Z tego artykułu dowiesz się, jak określać rozmiar i pozycję elementów na stronie za pomocą przekształcenia affina, aby uzyskać skalowanie, obrót, odbicie itd. W skrypcie Apps używaj właściwości
      .
    • setTransform(), aby ustawić przekształcenie elementów strony (podobny do trybu ABSOLUTE);
    • preconcatenateTransform(), aby połączyć przekształcenie o podobnych zainteresowaniach w bieżącym przekształceniu elementów strony (podobnie jak w trybie „RELATIVE”).

Skrypt ten tworzy kształt, ustawia przekształcenie, odczytuje jego nieodłączny rozmiar i odczytuje transformację koligacji.

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.');

Poniżej znajdziesz oczekiwane dane wyjściowe dziennika z tego skryptu:

Inherent width: 236.2pt; Inherent height: 236.2pt.

Otrzymany kształt będzie miał taką przekształcenie, a także 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°.