Sayfa öğelerinin boyutunu ve konumunu ayarlama

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):

$$A' = BA$$

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:

$$T=\begin{bmatrix} 1 & 0 & translate\_x\\ 0 & 1 & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

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:

$$S=\begin{bmatrix} scale\_x & 0 & 0\\ 0 & scale\_y & 0\\ 0 & 0 & 1 \end{bmatrix}$$

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:

$$R=\begin{bmatrix} cos(\theta) & sin(\theta) & 0\\ -sin(\theta) & cos(\theta) & 0\\ 0 & 0 & 1 \end{bmatrix}$$

Ö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:

$$F_x=\begin{bmatrix} 1 & 0 & 0\\ 0 & -1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}\qquad\qquad F_y=\begin{bmatrix} -1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}$$

Ö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:

$$A' = T2 \times B \times T1 \times A$$

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.