Sayfa Öğelerini Boyutlandırma ve Konumlandırma

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

$$A' = BA$$

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:

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

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:

$$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. Öğ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:

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

Ölçeklendirmede olduğu gibi, bu matris biçimini doğrudan bir öğeyi döndürmek için RELATIVEdönüşüm olarak kullanabilirsiniz, ancak bu durumda öğe sayfanın orijini etrafında döndürülür. Öğeyi merkezi veya farklı bir nokta etrafında 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:

$$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 formunu doğrudan bir öğeyi yansıtmak için RELATIVEdö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 (ör. bir öğeyi merkez noktası etrafında döndürmek için).

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ı, 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üşü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. Her ikisi 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 Slides 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 dikkate alırsanız aynı sonuçları elde edersiniz.