Bu kılavuzda, Google Slaytlar API'si ile affine dönüşümleri kullanarak sayfa öğelerinin boyutunu ve konumunu nasıl ayarlayacağınız açıklanmaktadır. Doğrusal dönüşümlere dair kavramsal bir giriş için Dönüşümler ve sayfa öğeleri kavram kılavuzuna bakın.
Öğeleri dönüştürme
Slaytlar API'si, sayfadaki öğeleri yeniden konumlandırmanıza ve ölçeklendirmenize olanak tanır. Bunu yapmak için öncelikle ne tür bir dönüşümün uygulanması gerektiğini belirleyin ve ardından bir veya daha fazla UpdatePageElementTransformRequest
öğesi içeren presentations.batchUpdate()
yöntemini kullanarak bu dönüşümü uygulayın.
Dönüşümler, ApplyMode
kullanılarak yapılabilir:
ABSOLUTE
, öğenin mevcut dönüşüm matrisini değiştirir. Dönüşüm güncelleme isteğinde atladığınız tüm parametreler sıfır olarak ayarlanır.RELATIVE
dönüştürme işlemleri, öğenin mevcut dönüşüm matrisiyle çarpılır (çarpma sırası önemlidir):
Göreli dönüştürme işlemleri, sayfa öğesini bulunduğu yerden taşır veya ölçeklendirir. Örneğin, bir şekli 100 nokta sola taşıma veya 40 derece döndürme. Mutlak dönüştürme işlemleri, mevcut konum ve ölçek bilgilerini atar. Örneğin, bir şekli sayfanın ortasına taşımak veya belirli bir genişliğe ölçeklendirmek.
Karmaşık dönüşümler genellikle daha basit dönüşümlerin bir dizisi olarak ifade edilebilir. Bir dönüşümü önceden hesaplamak (matris çarpımı kullanılarak birden fazla dönüşümün birleştirilmesi) genellikle ek maliyeti azaltabilir.
Bazı işlemler için bir öğenin mevcut dönüştürme parametrelerini bilmeniz gerekir. Bu değerlere sahip değilseniz presentations.pages.get()
yöntemini kullanarak bu değerleri alabilirsiniz.
Çeviri
Taşıma, bir sayfa öğesini aynı sayfadaki yeni bir konuma taşıma işlemidir. Mutlak çeviriler öğeyi belirli bir noktaya, göreli çeviriler ise belirli bir mesafeye taşır.
Temel bir çeviri dönüşüm matrisi şu şekildedir:
Bir öğeyi dönüştürmek için (boyutunu, kaymasını veya yönünü değiştirmeden) UpdatePageElementTransformRequest
kullandığınızda aşağıdaki AffineTransform yapılarından birini kullanabilirsiniz:
// Absolute translation: { 'transform': { 'scaleX': current scaleX value, 'scaleY': current scaleY value, 'shearX': current shearX value, 'shearY': current shearY value, 'translateX': X coordinate to move to, 'translateY': Y coordinate to move to, 'unit': 'EMU' // or 'PT' } } // Relative translation (scaling must also be provided to avoid a matrix multiplication error): { 'transform': { 'scaleX': 1, 'scaleY': 1, 'translateX': X coordinate to move by, 'translateY': Y coordinate to move by, 'unit': 'EMU' // or 'PT' } }
Ölçek
Ölçeklendirme, bir öğenin boyutunu değiştirmek için X veya Y boyutu boyunca uzatılması ya da sıkıştırılması işlemidir. Temel ölçeklendirme dönüşüm matrisi şu şekildedir:
Bir öğenin boyutunu değiştirmek için bu matris biçimini doğrudan RELATIVE
dönüştürme olarak kullanabilirsiniz ancak bu, öğenin oluşturulan kaydırma ve çevirme işlemlerini de etkileyebilir.
Eğimini veya çevirmesini etkilemeden öğeyi ölçeklendirmek için öğe referans çerçevesine geçin.
Döndürme
Döndürme dönüştürmeleri, ölçeklendirme ve kaydırma parametrelerini kullanarak bir sayfa öğesini bir nokta etrafında döndürür. Temel dönme dönüşümü matrisi, dönme açısının (radyan cinsinden) X ekseninden saat yönünün tersine doğru hareket ederek ölçüldüğü aşağıdaki biçime sahiptir:
Ölçeklendirmede olduğu gibi, bir öğeyi döndürmek için bu matris formunu doğrudan RELATIVE
dönüşümü olarak kullanabilirsiniz. Ancak bu durumda öğe, sayfanın orijini etrafında döndürülür. Öğeyi merkezi etrafında veya farklı bir noktada döndürmek için bu öğenin referans çerçevesine geçin.
Yansıma
Yansıma, bir öğeyi belirli bir çizgi veya eksen boyunca yansıtır. Temel x ve y ekseni yansıma dönüştürme matrisi aşağıdaki biçimlere sahiptir:
Ölçeklendirmede olduğu gibi, bu matris biçimini doğrudan bir öğeyi yansıtmak için RELATIVE
dönüştürme olarak kullanabilirsiniz. Ancak bu, öğenin de çevrilmesine neden olur. Öğeyi çevirmeden yansıtmak için öğe referans karesine geçin.
Öğe referans çerçeveleri
Doğrudan bir sayfa öğesine temel ölçek, döndürme veya yansıtma dönüşümü uygulamak, sayfanın referans çerçevesinde bir dönüşüm oluşturur. Örneğin, temel döndürme işlemi öğeyi sayfanın orijini (sol üst köşe) etrafında döndürür. Ancak, öğenin referans çerçevesinde işlem yapabilirsiniz. Örneğin, bir öğeyi merkez noktası etrafında döndürebilirsiniz.
Bir öğeyi kendi referans çerçevesinde dönüştürmek için öğeyi iki başka çeviri arasına alın: Öğenin merkezini sayfa orijinine taşıyan bir önceki çeviri T1
ve öğeyi orijinal konumuna geri taşıyan bir sonraki çeviri T2
. İşlemin tamamı bir matris çarpımı olarak ifade edilebilir:
Farklı noktaları orijine çevirerek diğer referans çerçevelerine de geçebilirsiniz. Bu noktalar, yeni referans çerçevesinin merkezi olur.
Bu dönüşümlerin her birini sıralı RELATIVE
dönüştürme istekleri olarak ayrı ayrı gerçekleştirebilirsiniz. İdeal olarak, yukarıdaki A'
matris çarpmalarıyla önceden hesaplamalı ve sonucu tek bir ABSOLUTE
dönüşümü olarak uygulamalısınız. Alternatif olarak, T2 * B * T1
ürününü önceden hesaplayın ve bunu tek bir RELATIVE
dönüşümü olarak uygulayın. Bu iki yöntem de API işlemleri açısından, dönüştürme isteklerini tek tek göndermekten daha verimlidir.
Sınırlamalar
Bazı boyutlandırma ve konumlandırma alanları, bazı sayfa öğesi türleriyle uyumlu değildir. Aşağıdaki tabloda, belirli sayfa öğelerinin boyutlandırma ve konumlandırma alanlarıyla uyumluluğu özetlenmiştir:
Alan | Şekil | Video | Tablo |
---|---|---|---|
Translation | ✔ | ✔ | ✔ |
Scale | ✔ | ✔ | Hayır** |
Yanal kayma | ✔ | Hayır | Hayır |
Tablo satır ve sütun boyutlarını güncellemek için UpdateTableRowPropertiesRequest
ve UpdateTableColumnPropertiesRequest
öğelerini kullanın.
Sayfa öğesinde kaydırma varsa tüm boyutlandırma ve konumlandırma alanları beklenmedik sonuçlar verebilir. Tüm sınırlamalar değişebilir. Güncel bilgiler için Google Slaytlar API başlıklı makaleyi inceleyin.
Yeniden yapılandırılmış değerler
Bir sayfa öğesi oluştururken bir boyut belirtebilir ve bu boyutu belirli bir görsel sonuç sağlayacak şekilde dönüştürebilirsiniz. Ancak Slaytlar API'si, sağladığınız değerleri aynı görsel görünümü sağlayan başka değerlerle değiştirebilir. Genel olarak, API'yi kullanarak bir boyut yazarsanız aynı boyutun döndürüleceği garanti edilmez. Ancak dönüştürme işlemini hesaba katarsanız aynı sonuçları elde edersiniz.