Bu kılavuzda, sayfa öğelerini affine dönüşümleri kullanarak nasıl boyutlandıracağınız ve konumlandıracağınız açıklanmaktadır. Afin dönüşümlere dair kavramsal bir giriş için Dönüşümler 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 önce ne tür bir dönüşümün uygulanması gerektiğini belirleyin, ardından bir veya daha fazla UpdatePageElementTransformRequest öğesi içeren presentations.batchUpdate yöntemini kullanarak bu dönüşümü uygulayın.
Dönüşümler iki applyModes birinde 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 hareket ettirir 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şlikte ö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 isteğiyle 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 çevirmek için (boyutunu, kaymasını veya yönünü değiştirmeden) UpdatePageElementTransformRequest kullanırken 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çeklendirme
Ölçeklendirme, bir öğenin boyutunu değiştirmek için X ve/veya Y boyutu boyunca uzatılması veya 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.
Öğeyi, kaydırma veya çevirme işlemini etkilemeden ölçeklendirmek için 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, bu matris formunu doğrudan bir öğeyi döndürmek için 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 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 formunu doğrudan bir öğeyi yansıtmak için RELATIVE
dönüşüm olarak kullanabilirsiniz. Ancak bu, öğenin de çevrilmesine neden olur. Öğeyi herhangi bir çeviri olmadan yansıtmak için referans çerçevesine geçin.
Öğe referans çerçeveleri
Doğrudan bir sayfa öğesine temel ölçek, yansıma veya döndürme dönüşümü uygulamak, sayfanın referans çerçevesinde bir dönüşüm oluşturur. Örneğin, temel bir rotasyon, öğ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ürmek için bu yöntemi kullanabilirsiniz.
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üşüm 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
'u 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.
Slaytlar API'si, değerlerinizi yeniden yapılandırabilir
Bir sayfa öğesi oluştururken bir boyut belirtebilir ve bu boyutu belirli bir görsel sonuç sağlayacak şekilde dönüştürebilirsiniz. Ancak API, 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.