Sayfa öğelerini boyutlandırma ve konumlandırma

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

  1. Boyut ve konum için alıcı ve ayarlayıcı işlevlerini kullanarak.
  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, boyut ve konum, döndürülmemiş bir sayfa öğesinin sınırlayıcı kutusuna göre ö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 ölçülür. Değerleri okumak için getLeft() ve getTop() öğelerini 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() simgesini kullanın.
  • Döndürme: Sınırlayıcı kutunun ortasındaki dikey çizgiye göre saat yönünde dönme. Değeri okumak için getRotation() değerini kullanın.

Tüm uzunluklar nokta (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 bir sayfa öğesinin boyutunu ve konumunu ayarlayabilirsiniz. Mevcut bir şeklin boyutunu, konumunu ve dönüşünü ayarlayabilir, ayrıca bir öğenin ölçeğini ayarlayarak öğeyi yeniden boyutlandırabilir veya kenarlarından birinde yansıtabilirsiniz.

Oluşturma sırasında

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 boyuta sahip 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şturduğunuz bir sayfa öğesinin boyutunu ve konumunu güncelleyebilirsiniz:

  • Döndürülmemiş sınır kutusunun sol üst köşesinin konumunu ayarlamak için setLeft() ve setTop() tuşlarını kullanın.
  • setWidth() ve setHeight() öğelerini kullanarak sınırlayıcı kutunun oluşturulan genişliğini ve yüksekliğini ayarlayın.
  • setRotation() simgesini kullanarak sınırlayıcı kutunun merkez etrafında saat yönünde dönmesini ayarlayı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 konumu ile 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 ayarlayıcıları herhangi bir sırada veya kombinasyonda kullanılabilir. Yukarıdaki üçüncü satırın aşağıdaki komut dosyasıyla değiştirilmesi aynı sonucu verir:

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

Ölçeklendirme

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

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

Aşağıdaki şekilde, yukarıdaki kodun 45° döndürülmüş bir kare şeklinde nasıl çalıştığını görebilirsiniz. Ölçekleme sırasında sınırlayıcı kutunun sol üst köşesinin sabit kaldığını unutmayın.

Slayt Ölçeklendirme

Kenar boyunca yansıma

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

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 şekilde nasıl çalıştığını görebilirsiniz. Sayfa öğesinin, sınırlayıcı kutusunun kenarlarından birinde döndürüldüğünü ancak ortasında döndürülmediğini unutmayın.

Slayt Yansıması

Satır rotasyonu

Diğer sayfa öğeleri gibi, bir satırın dönüşümü de satırın dikey açısı değil, satırın sınırlayıcı kutusunun dönüşümüdür. Belirtilen başlangıç ve bitiş noktalarına sahip bir çizgi oluşturduğunuzda çizginin dönüşümü her zaman 0° olur. Google Slaytlar kullanıcı arayüzünde çizginin uç noktalarını sürüklediğinizde çizginin dikey açısı, sınırlayıcı kutusunun boyutu ve konumu değişir ancak çizginin dönüşümü 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 uyumlu değildir. Aşağıdaki tabloda, belirli sayfa öğesi türleriyle uyumlu olmayan yöntemler özetlenmiştir.

Yöntemler Şekil Video Tablo
getHeight(), getWidth() HAYIR (null döndürür)
setHeight(), setWidth() HAYIR
setRotation() HAYIR HAYIR
scaleHeight(), scaleWidth() HAYIR

Sayfa öğesinde kaydırma 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.

Doğrusal dönüşümleri kullanma

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

Google Apps Komut Dosyası, Google Slides API ile affine dönüşümü kullanmak için benzer bir arayüz sağlar.

  • Bu makalede, affine dönüşüm kavramları ve sayfa öğeleri için doğal boyuttan ve dönüşümden oluşturulan boyutun nasıl çıkarılacağı açıklanmaktadır. Apps Komut Dosyası'nda şunu kullanın:
    • Sayfa öğelerinin doğal boyutu için getInherentWidth() ve getInherentHeight();
    • getTransform() sayfa öğelerinin affine dönüşümü için.
  • Bu makalede, ölçeklendirme, döndürme, yansıma vb. işlemleri yapmak için sayfa öğelerinin affine dönüşümü kullanılarak nasıl boyutlandırılacağı ve konumlandırılacağı açıklanmaktadır. Apps Script'te
    • setTransform() sayfa öğelerinin affine dönüşümünü ayarlamak için (ABSOLUTE moduna benzer);
    • preconcatenateTransform(), sayfa öğelerinin mevcut dönüşümüyle bir doğrusal dönüşümü önceden birleştirmek için (RELATIVE moduna benzer).

Aşağıdaki komut dosyası bir şekil oluşturur, şeklin dönüşümünü ayarlar, şeklin doğal boyutunu ve affine 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.

Sonuçta ortaya çıkan şeklin aşağıdaki dönüşümü, oluşturulan boyutu ve konumu 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°.