Bu kılavuzda, Google Slaytlar API'si ile afin dönüşümlerini kullanarak sayfa öğelerini nasıl boyutlandırıp konumlandıracağınız açıklanmaktadır. Afin dönüşümleriyle ilgili kavramsal bir giriş için Dönüşümler ve sayfa öğeleri kavram kılavuzuna bakın.
Öğeleri dönüştürme
Slides API, sayfadaki öğeleri yeniden konumlandırmanıza ve ölçeklendirmenize olanak tanır. Bunu yapmak için önce ne tür bir dönüşüm 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, ApplyMode
kullanılarak yapılabilir:
ABSOLUTE
dönüşümleri, öğenin mevcut dönüşüm matrisinin yerini alır. Dönüşüm güncelleme isteğinden çıkardığınız tüm parametreler sıfır olarak ayarlanır.RELATIVE
dönüşümleri, öğenin mevcut dönüşüm matrisiyle çarpılır (çarpma sırası önemlidir):
Göreceli dönüşümler, sayfa öğesini bulunduğu yerden taşır veya ölçeklendirir. Örneğin, bir şekli 100 nokta sola taşımak veya 40 derece döndürmek. Mutlak dönüştürmeler, mevcut konum ve ölçek bilgilerini siler. Ö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 olanların bir sırası olarak ifade edilebilir. Bir dönüşümü önceden hesaplamak (matris çarpımı kullanarak birden fazla dönüşümü birleştirmek) genellikle ek yükü azaltabilir.
Bazı işlemler için bir öğenin mevcut dönüşüm parametrelerinin ne olduğunu bilmeniz gerekir. Bu değerlere sahip değilseniz presentations.pages.get()
yöntemini kullanarak bunları alabilirsiniz.
Çeviri
Çeviri, bir sayfa öğesini aynı sayfada yeni bir konuma taşıma işlemidir. Mutlak çeviriler öğeyi belirli bir noktaya taşırken göreli çeviriler öğeyi belirli bir mesafeye taşır.
Temel bir çeviri dönüşüm matrisi şu biçimdedir:
Bir öğeyi (boyutunu, kaymasını veya yönünü değiştirmeden) çevirmek için
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 öğeyi X veya Y boyutunda uzatarak ya da sıkıştırarak boyutunu değiştirme işlemidir. Temel bir ölçeklendirme dönüşüm matrisi şu biçimdedir:
Bu matris formunu, bir öğeyi yeniden boyutlandırmak için doğrudan RELATIVE
dönüşüm olarak kullanabilirsiniz ancak bu, öğenin oluşturulan kayma ve çevirisini de etkileyebilir.
Öğeyi kaymasını veya çevrilmesini etkilemeden ölçeklendirmek için öğenin referans çerçevesine geçin.
Döndürme
Döndürme dönüşümleri, ölçekleme ve kaydırma parametrelerini kullanarak bir sayfa öğesini bir nokta etrafında döndürür. Temel döndürme dönüştürme matrisi aşağıdaki biçime sahiptir. Burada döndürme açısı (radyan cinsinden) X ekseninden saat yönünün tersine doğru hareket ederek ölçülür:
Ölçeklendirmede olduğu gibi, bu matris formunu doğrudan RELATIVE
dönüştürme olarak kullanarak bir öğeyi döndürebilirsiniz. Ancak bu durumda öğe, sayfanın başlangıç noktası etrafında döndürülür. Öğeyi merkezi veya farklı bir nokta etrafında döndürmek için bu öğe referans çerçevesine geçin.
Yansıma
Yansıtma, bir öğeyi belirli bir çizgi veya eksen boyunca yansıtır. Temel x ve y ekseni yansıtma dönüştürme matrisi aşağıdaki biçimlere sahiptir:
Ölçeklendirmede olduğu gibi, bu matris formunu doğrudan bir RELATIVE
dönüştürme
olarak kullanarak bir öğeyi yansıtabilirsiniz ancak bu durumda öğe de çevrilir. Öğeyi çevirmeden yansıtmak için öğe referans çerçevesine geçin.
Öğe referans çerçeveleri
Temel bir ölçek, döndürme veya yansıtma dönüşümünü doğrudan bir sayfa öğesine uygulamak, sayfanın referans çerçevesinde bir dönüşüm oluşturur. Örneğin, temel bir döndürme işlemi öğeyi sayfanın başlangıç noktası (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çevesi içinde dönüştürmek için öğeyi iki başka çeviri arasına alın: öğe merkezini sayfa başlangıcına taşıyan bir önceki çeviri T1
ve öğeyi orijinal konumuna geri taşıyan bir sonraki çeviri T2
. Tam işlem, matris çarpımı olarak ifade edilebilir:
Farklı noktaları başlangıç noktasına çevirerek de diğer referans çerçevelerine geçebilirsiniz. Bu noktalar, yeni referans çerçevesinin merkezi olur.
Bu dönüşümlerin her biri, sıralı RELATIVE
dönüştürme istekleri olarak ayrı ayrı gerçekleştirilebilir. İdeal olarak, A'
yukarıdaki işlemi matris çarpımlarıyla önceden hesaplamalı ve sonucu tek bir ABSOLUTE
dönüşümü olarak uygulamalısınız. Alternatif olarak, T2 * B * T1
çarpımını önceden hesaplayıp tek bir RELATIVE
dönüşümü olarak uygulayın. Bu yöntemlerin her ikisi de, dönüştürme isteklerini tek tek göndermeye kıyasla API işlemleri açısından 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 özetlenmektedir:
Alan | Şekil | Video | Tablo |
---|---|---|---|
Translation | ✔ | ✔ | ✔ |
Scale | ✔ | ✔ | Hayır** |
Kaydırma | ✔ | Hayır | Hayır |
Tablo satırı ve sütun boyutlarını güncellemek için
UpdateTableRowPropertiesRequest
ve
UpdateTableColumnPropertiesRequest
simgelerini kullanın.
Sayfa öğesinde kayma 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 Slides API başlıklı makaleyi inceleyin.
Yeniden düzenlenmiş değerler
Bir sayfa öğesi oluşturduğunuzda belirli bir görsel sonuç sağlayan bir boyut ve dönüşüm belirtebilirsiniz. Ancak Slides API, sağladığınız değerleri aynı görsel görünümü veren başka değerlerle değiştirebilir. Genel olarak, API'yi kullanarak bir boyut yazarsanız aynı boyutun döndürülmesini garanti edemezsiniz. Ancak dönüşümü hesaba katarsanız aynı sonuçları elde edersiniz.