Bir sayfa öğesinin boyutunu ve konumunu alıp değiştirmenin iki farklı yolu vardır:
- Boyut ve konum için alıcı ve ayarlayıcı işlevlerini kullanarak.
- Doğal boyutu korurken
getTransform()
vesetTransform()
işlevlerini kullanarak afin dönüşümünü değiştirebilirsiniz.
Sayfa öğesi özelliklerini okuma
Ş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ı kutunun sol üst köşesine kadar ölçülür. Değerleri okumak için
getLeft()
vegetTop()
öğelerini kullanın. - Genişlik ve Yükseklik: Döndürülmemiş sınırlama kutusunun genişliği ve yüksekliği.
Değerleri okumak için
getWidth()
vegetHeight()
simgesini kullanın. - Döndürme: Sınırlayıcı kutunun merkezi etrafındaki dikey çizgiye göre saat yönünde döndürme. Değeri okumak için
getRotation()
kullanın.
Tüm uzunluklar nokta (pt) cinsinden ölçülür. Dönme 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 şeklin boyutunu, konumunu ve dönüşünü ayarlayabilir, ayrıca öğenin ölçeğini ayarlayarak boyutunu değiştirebilir 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 boyutla 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
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()
vesetTop()
öğelerini kullanın. setWidth()
vesetHeight()
öğelerini kullanarak sınırlayıcı kutunun oluşturulan genişliğini ve yüksekliğini ayarlayı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 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
Ş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üş bir kare şeklinde nasıl çalıştığı gösterilmektedir. Ölçekleme sırasında sınırlayıcı kutunun sol üst köşesinin sabit kaldığını unutmayın.
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 ş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.
Satır rotasyonu
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. 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 özetlenmektedir.
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.
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, 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()
vegetInherentHeight()
; - Sayfa öğelerinin afin dönüşümü için
getTransform()
.
- Sayfa öğelerinin doğal boyutu için
- 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.
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.
Elde edilen ş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°.