Sayfa öğelerini boyutlandırma ve konumlandırma

Bir sayfa öğesinin boyutunu ve konumunu alıp değiştirmenin iki farklı yolu vardır:

  1. Boyut ve konum için alıcı ve belirleyici işlevlerini kullanma.
  2. Doğal boyutu korurken getTransform() ve setTransform() işlevlerini kullanarak afin dönüşümünü manipüle etme.

Sayfa öğesi özelliklerini okuma

Boyutlandırma ve Döndürme

Şekilde gösterildiği gibi boyut ve konum, oluşturulan bir sayfa öğesinin sınırlayıcı kutusuna göre ölçülür. Bunun için döndürme yoktur:

  • Sol ve Üst: Sayfanın sol üst köşesinden döndürülmemiş sınırlayıcı kutusunun sol üst köşesine kadar ölçülür. Değerleri okumak için getLeft() ve getTop() tuşlarını 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() öğelerini kullanın.
  • Döndürme: Sınırlayıcı kutunun merkezi çevresindeki dikey çizgiye göre saat yönünde döndürme. Değeri okumak için getRotation() kullanın.

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

Sayfa öğesi özelliklerini ayarlama

Bir sayfa öğesini oluştururken insertShape() gibi bir ekleme yöntemi kullanarak boyutunu ve konumunu ayarlayabilirsiniz. Mevcut bir şekil için boyutu, konumu ve döndürmeyi ayarlayabilirsiniz. Ayrıca, bir öğenin ölçeklemesini, yeniden boyutlandırılacak veya kenarlarından biri boyunca yansıtacak şekilde ayarlayabilirsiniz.

Oluşturulduğunda

Bir sayfa öğesi oluştururken konum ve boyut bilgilerini sağlayabilirsiniz.

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 boyutla bir şekil oluşturur ve şeklin konum ve boyut bilgilerini okur. Beklenen günlük:

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

Boyut, konum ve döndürme

Bir sayfa öğesini oluşturduktan sonra boyutunu ve konumunu güncelleyebilirsiniz:

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

Aşağıdaki komut dosyası, etkin sununun ilk slaytında bir şekil oluşturur, konumunu, boyutunu ve dönüşünü güncellemek için belirleyicileri 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.');

Bu komut dosyasından beklenen günlük çıkışı aşağıda gösterilmiştir:

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

Boyut, konum ve rotasyon belirleyicileri herhangi bir sırada veya kombinasyonda kullanılabilir. Yukarıdaki üçüncü satırı aşağıdaki komut dosyasıyla değiştirdiğinizde aynı sonucu elde edersiniz:

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

Ölçeklendirme

Şeklin boyutunu mutlak bir değere ayarlamak için yukarıda setWidth() ve setHeight() kullanmak yerine, bir sayfa öğesini göreli bir ölçeklendirme faktörüyle uzatmak veya sıkıştırmak için scaleWidth() ve scaleHeight() kullanılabilir.

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

Aşağıdaki şekilde, yukarıdaki kodun 45° döndürülmüş kare bir şekil üzerinde nasıl çalıştığı gösterilmektedir. Sınırlayıcı kutunun sol üst köşesinin ölçeklendirme sırasında sabit olduğuna dikkat edin.

Slaytlar Ölçeklendirme

Kenar boyunca yansıma

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

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.

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

Slaytlar Yansıması

Çizgi döndürme

Diğer sayfa öğelerinde olduğu gibi, bir çizginin dönüşü de çizginin dikey açısı değil, sınırlayıcı kutusunun dönüşüdür. Başlangıç ve bitiş noktaları belirlenmiş bir çizgi oluşturduğunuzda, bu çizginin dönüşü her zaman 0° olur. Google Slaytlar kullanıcı arayüzünde çizginin uç noktalarını sürüklemek dikey açısının yanı sıra sınırlayıcı kutusunun boyutunu ve konumunu da değiştirir ancak dönüşünü değiştirmez. setRotation() kullanıldığında, çizginin sınırlayıcı kutusu döndürülür ve bu durumda dikey açısı etkili şekilde değişir. Dolayısıyla iki çizgi aynı görsel dikey açıya, 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 kesme varsa tüm boyutlandırma ve konumlandırma yöntemleri beklenmedik sonuçlar verebilir. Tüm sınırlamalar değiştirilebilir. Güncel bilgiler için referansı kontrol edin.

Afin dönüşümleri kullanma

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

Google Apps Komut Dosyası, afin dönüşümü Google Slaytlar API'si ile kullanmak için benzer bir arayüz sunar.

  • Bu makalede, okuma amacıyla afin dönüşüm kavramlarının yanı sıra oluşturulan boyutun doğal (yerel) boyuttan ve dönüşümünün nasıl çıkarılacağı açıklanmaktadır. Apps Komut Dosyası'nda şunu kullanın:
    • Sayfa öğelerinin yerel boyutu için getInherentWidth() ve getInherentHeight();
    • Sayfa öğelerinin afin dönüşümü için getTransform().
  • Yazmak için bu makalede ölçeklendirme, döndürme, yansıma vb. işlemleri gerçekleştirmek için afin dönüşüm kullanarak sayfa öğelerinin nasıl boyutlandırılacağı ve konumlandırılacağı açıklanmaktadır.
    • Sayfa öğelerinin afin dönüşümünü ayarlamak için setTransform() (ABSOLUTE moduna benzer)
    • Sayfa öğelerinin mevcut dönüşümüyle afin dönüşümü önceden birleştirmek için preconcatenateTransform() (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.');

Bu komut dosyasından beklenen günlük çıkışı aşağıda gösterilmiştir:

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

Ortaya çıkan şekil, aşağıdaki dönüştürmeye, boyut ve konuma sahip olur:

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