Bir sayfa öğesinin boyutunu ve konumunu öğrenmenin ve 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, 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()
vegetTop()
öğ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()
vegetHeight()
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 öğ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 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()
vesetTop()
tuşlarını kullanın. setWidth()
vesetHeight()
öğ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.
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.
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()
vegetInherentHeight()
; getTransform()
sayfa öğelerinin affine dönüşümü için.
- Sayfa öğelerinin doğal boyutu 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°.