Sayfa öğelerinin boyutunu ve konumunu ayarlama

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

$$A' = BA$$

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:

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

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:

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

Bu matris formunu, bir öğeyi yeniden boyutlandırmak için doğrudan RELATIVEdö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:

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

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

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

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.