Sayfa Öğelerini Boyutlandırma ve Konumlandırma

Bu kılavuzda, afin dönüşümleri kullanarak sayfa öğelerini nasıl boyutlandırdığınız ve konumlandırdığınız açıklanmaktadır. Afin dönüşümlere kavramsal giriş için Dönüşümler kavram rehberine bakın.

Öğeleri dönüştürme

Slaytlar API'si bir 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 modundan birinde yapılabilir:

  • ABSOLUTE, öğenin mevcut dönüşüm matrisini değiştirir. Dönüşüm güncelleme isteğinden çıkardığınız tüm parametreler sıfıra ayarlanır.

  • RELATIVE dönüşümleri, öğenin mevcut dönüşüm matrisi ile çarlanır (çarpma sırası önemlidir):

$$A' = BA$$

Göreli dönüşümler, sayfa öğesini şu anda 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üşümler, mevcut konum ve ölçek bilgilerini siler (örneğin, bir şekli sayfanın ortasına taşıma veya belirli bir genişliğe ölçekleme).

Karmaşık dönüşümler genellikle daha basit dönüşümler dizisi olarak ifade edilebilir. Bir dönüşümün önceden hesaplanması (matris çarpımını kullanarak birden fazla dönüşümün birleştirilmesi) 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 bunları bir presentations.pages.get isteği ile alabilirsiniz.

Çeviri

Çeviri, basit bir şekilde bir sayfa öğesini aynı sayfada yeni bir konuma taşıma işlemidir. Mutlak çeviriler öğeyi belirli bir noktaya taşırken göreceli çeviriler öğeyi belirli bir mesafeye taşır.

Temel ç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 UpdatePageElementTransformRequest kullandığınızda (öğenin boyutunu, kısmasını veya yönünü değiştirmeden) 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 öğeyi uzatma işlemi veya sıkıştırma 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}$$

Bu matris formunu, bir öğeyi yeniden boyutlandırmak için doğrudan bir RELATIVE dönüşümü olarak kullanabilirsiniz. Ancak bu durum, öğenin oluşturulan kesme ve çevirisini de etkileyebilir. Öğeyi, kaymasını veya çevirisini etkilemeden ölçeklendirmek için referans çerçevesine kaydırın.

Döndürme

Rotasyon dönüşümleri, ölçeklendirme ve kesme parametrelerini kullanarak bir sayfa öğesini bir noktanın etrafında döndürür. Temel döndürme dönüşüm matrisi şu biçimdedir; dönme açısı (radyan cinsinden) saat yönünün tersine hareket ederek X ekseninden ö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, bir öğeyi döndürmek için bu matris formunu doğrudan bir RELATIVE dönüşümü olarak kullanabilirsiniz. Ancak bu, öğenin sayfanın kaynağı hakkında döndürülmesine neden olur. Öğeyi merkezi etrafında veya farklı bir nokta etrafında döndürmek için bu referans çerçeveye kaydırın.

Yansıma

Yansıtma, bir öğeyi belirli bir çizgi veya eksen boyunca yansıtır. Temel x ve y ekseni yansıma dönüşümü matrisi aşağıdaki biçimlerdedir:

$$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 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ıtma veya döndürme dönüşümü uygulamak, sayfanın referans çerçevesindeki dönüşüme neden olur. Örneğin, temel bir döndürme işlemi öğeyi sayfanın kaynağı (sol üst köşe) etrafında döndürür. Bununla birlikte, öğenin kendisinin referans çerçevesi içinde çalışabilir (örneğin, bir öğeyi merkez noktası etrafında döndürmek için).

Bir öğeyi kendi referans çerçevesi içinde dönüştürmek için öğeyi iki çevirinin arasına yerleştirin: öğenin merkezini sayfa kaynağına taşıyan önceki çeviri T1 ve öğeyi orijinal konumuna geri taşıyan sonraki çeviri T2. Tam işlem bir matris ürünü olarak ifade edilebilir:

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

Bunun yerine farklı noktaları kaynağa çevirerek diğer referans çerçevelerine de geçebilirsiniz. Bu noktalar, yeni referans çerçevesinin merkezi olur.

Bu dönüşümlerin her biri, sıralı RELATIVE dönüşüm istekleri olarak ayrı ayrı gerçekleştirilebilir. İdeal olarak yukarıdaki A' değerini matris çarpımlarıyla önceden hesaplamalı ve sonucu tek bir ABSOLUTE dönüşümü olarak uygulamalısınız. Alternatif olarak, T2 * B * T1 ürününün önceden hesaplamasını yapıp tek bir RELATIVE dönüşümü olarak uygulayabilirsiniz. Bunların her ikisi de API işlemleri açısından daha verimlidir ve daha sonra dönüşüm isteklerini tek tek gönderir.

Sınırlamalar

Bazı boyutlandırma ve konumlandırma alanları, bazı sayfa öğesi türleriyle uyumsuzdur. 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**
Kesme Hayır Hayır

** Tablo satır ve sütun boyutlarını güncellemek için UpdateTableRowPropertiesRequest ve UpdateTableColumnPropertiesRequest kullanın.

Sayfa öğesinde kesme varsa tüm boyutlandırma ve konumlandırma alanları beklenmedik sonuçlar verebilir. Tüm sınırlamalar değiştirilebilir. Güncel bilgiler için Google Slides API'ye göz atın.

Slaytlar API'si değerlerinizi yeniden düzenleyebilir

Sayfa öğesi oluşturduğunuzda belirli bir görsel sonuç sağlayan bir boyut ve dönüşüm belirtebilirsiniz. Ancak API, sağladığınız değerleri aynı görsel görünümü sağlayan diğer 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üşümü hesaba kattığınızda aynı sonuçları alırsınız.