Sayfa öğelerinin boyutunu ve konumunu ayarlama

Bir sayfa öğesinin boyutunu ve konumunu alıp değiştirebileceğiniz iki farklı yöntem vardır:

  1. Boyut ve konum için getter ve setter işlevlerini kullanma.
  2. Doğal boyutu korurken getTransform() ve setTransform() işlevlerini kullanarak afin dönüşümünü değiştirme.

Sayfa öğesi özelliklerini okuma

Boyutlandırma ve Döndürme

Şekilde gösterildiği gibi, döndürülmemiş bir sayfa öğesinin sınırlayıcı kutusuna göre boyut ve konum ölçülür:

  • Sol ve Üst: Sayfanın sol üst köşesinden, döndürülmemiş sınırlayıcı kutunun sol üst köşesine kadar olan mesafe. Değerleri okumak için getLeft() ve getTop() özelliklerini kullanın.
  • Genişlik ve Yükseklik: Döndürülmemiş sınırlayıcı kutunun genişliği ve yüksekliği. Değerleri okumak için getWidth() ve getHeight() değerlerini kullanın.
  • Döndürme: Sınırlayıcı kutunun merkezindeki dikey çizgiye göre saat yönünde döndürme. Değeri okumak için getRotation() kullanın.

Tüm uzunluklar punto (pt) cinsinden ölçülür. Dönüş derece cinsinden ölçülür (°).

Sayfa öğesi özelliklerini ayarlama

insertShape() gibi bir ekleme yöntemi kullanarak oluşturduğunuz sayfa öğesinin boyutunu ve konumunu ayarlayın. Mevcut bir şeklin boyutunu, konumunu ve dönüşünü ayarlayabilirsiniz. Ayrıca, bir öğenin ölçeklendirmesini, yeniden boyutlandırmak veya kenarlarından biri boyunca yansıtmak için de ayarlayabilirsiniz.

Oluşturulma sırasında

Sayfa öğesi oluştururken konum ve boyut bilgileri sağlayın.

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

Yukarıdaki komut dosyası, etkin sununun ilk slaytında belirtilen konum ve boyutta bir şekil oluşturur ve şeklin konum ve boyut bilgilerini okur. Beklenen günlük şudur:

Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.

Boyut, konum ve döndürme

Oluşturduktan sonra bir sayfa öğesinin boyutunu ve konumunu güncelleme:

  • Döndürülmemiş sınırlayıcı kutunun sol üst köşesinin konumunu ayarlamak için setLeft() ve setTop() simgelerini kullanın.
  • Sınırlayıcı kutunun oluşturulan genişliğini ve yüksekliğini ayarlamak için setWidth() ve setHeight() değerlerini kullanın.
  • Sınırlayıcı kutunun merkezinin etrafında saat yönünde dönmesini ayarlamak için setRotation() simgesini kullanın.

Aşağıdaki komut dosyası, etkin sunumun ilk slaytında bir şekil oluşturur, konumunu, boyutunu ve dönüşünü güncellemek için ayarlayıcıları kullanır ve şeklin konum ve boyut bilgilerini okur.

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

Beklenen günlük şudur:

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

Boyut, konum ve döndürme ayarlayıcıları herhangi bir sırada veya kombinasyonda kullanılabilir. Önceki komut dosyasındaki üçüncü satırı aşağıdaki komut dosyasıyla değiştirmek de aynı sonucu verir:

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

Sayfa öğesini ölçeklendirme

Şeklin boyutunu mutlak bir değere ayarlamak için setWidth() ve setHeight() kullanmak yerine, scaleWidth() ve scaleHeight() ile göreli bir ölçeklendirme faktörü kullanarak sayfa öğesini genişletebilir veya daraltabilirsiniz.

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

Aşağıdaki şekilde, önceki kodun 45° döndürülmüş kare şeklinde nasıl çalıştığı gösterilmektedir. Sınırlayıcı kutunun sol üst köşesinin ölçeklendirme sırasında sabitlendiğini unutmayın.

Slaytları Ölçeklendirme

Sayfa öğesini yansıtma

scaleWidth() ve scaleHeight() içindeki bağımsız değişken, bir sayfa öğesini yatay veya dikey olarak çevirmek için kullanılabilecek şekilde negatif olabilir.

// Flip horizontally along the left edge of the bounding box.
shape.scaleWidth(-1);
// Flip vertically along the top edge of the bounding box.
shape.scaleHeight(-1);

Aşağıdaki şekilde, önceki kodun 45° döndürülmüş bir şekilde nasıl çalıştığı gösterilmektedir. Sayfa öğesinin, sınırlayıcı kutusunun kenarlarından biri boyunca çevrildiğini ancak merkezinin çevrilmediğini unutmayın.

Slaytlar ile ilgili düşünceler

Çizgi döndürme

Diğer sayfa öğelerinde olduğu gibi, bir çizginin dönüşü, çizginin dikey açısı değil, sınırlayıcı kutusunun dönüşüdür. Belirli başlangıç ve bitiş noktalarıyla bir çizgi oluşturduğunuzda bu çizginin dönüşü her zaman 0° olur. Çizginin uç noktalarını Slaytlar kullanıcı arayüzünde sürüklediğinizde, çizginin dikey açısı ile sınırlayıcı kutusunun boyutu ve konumu değişir ancak dönüşü değişmez. setRotation() tuşunu kullanarak çizginin sınırlayıcı kutusunu döndürebilirsiniz. Bu işlem, çizginin dikey açısını etkili bir şekilde değiştirir. Bu nedenle, iki çizgi aynı görsel dikey açıya sahip olabilir ancak farklı sınırlayıcı kutulara ve dolayısıyla farklı boyut, konum ve döndürme değerlerine sahip olabilir.

Sınırlamalar

Bazı boyutlandırma ve konumlandırma yöntemleri, bazı sayfa öğesi türleriyle uyumsuzdur. Aşağıdaki tabloda, belirli sayfa öğesi türleriyle uyumlu olmayan yöntemler özetlenmektedir.

Yöntemler Şekil Video Tablo
getHeight(), getWidth() HAYIR (boş değer döndürür)
setHeight(), setWidth() HAYIR
setRotation() HAYIR HAYIR
scaleHeight(), scaleWidth() HAYIR

Sayfa öğesinde kayma varsa tüm boyutlandırma ve konumlandırma yöntemleri beklenmedik sonuçlar verebilir. Tüm sınırlamalar değişebilir. Güncel bilgiler için referansı kontrol edin.

Afin dönüşümleri kullanma

Gelişmiş kontrol için bir sayfa öğesinin boyutu ve konumu, doğal boyutu ve afin dönüşümü aracılığıyla da hesaplanıp ayarlanabilir.

Google Apps Komut Dosyası, afin dönüşümleri kullanmak için Google Slaytlar API'sine benzer bir arayüz sağlar.

  • Özellikleri okumak için bir öğenin nasıl ölçeklendirildiğini, döndürüldüğünü, kaydırıldığını ve konumlandırıldığını açıklayan bir afin dönüşümü kullanabilirsiniz. Bir öğenin slayttaki görsel boyutunu hesaplamak için öğenin dönüşümünü ve doğal (yerel) boyutunu nasıl kullanacağınızı öğrenmek için Dönüşümler başlıklı makaleyi inceleyin. Apps Komut Dosyası'nda:
    • Sayfa öğelerinin doğal (yerel) boyutu için getInherentWidth() ve getInherentHeight();
    • getTransform(), sayfa öğelerinin afin dönüşümü için.
  • Özellikleri değiştirmek için ölçeklendirme, döndürme, yansıtma ve daha fazlasını yapmak üzere afin dönüşümlerini kullanabilirsiniz. Sayfa öğelerini afin dönüşümleri kullanarak nasıl boyutlandıracağınızı ve konumlandıracağınızı öğrenmek için Boyutlandırma ve Konumlandırma başlıklı makaleyi inceleyin. Apps Komut Dosyası'nda şunları kullanın:
    • setTransform() sayfa öğelerinin afin dönüşümünü ayarlamak için (ABSOLUTE moduna benzer);
    • preconcatenateTransform(), sayfa öğelerinin mevcut dönüşümüne bir afin dönüşümü önceden birleştirmek için (RELATIVE moduna benzer).

Aşağıdaki komut dosyası bir şekil oluşturur, dönüşümünü ayarlar, doğal boyutunu okur ve afin dönüşümünü okur.

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

Beklenen günlük çıktısı:

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

Elde edilen şeklin dönüştürmesi, oluşturulan boyutu ve konumu aşağıdaki gibidir:

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°.