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ıracağınız açıklanmaktadır. Afin dönüşümlere kavramsal bir giriş için Dönüşümler kavram kılavuzunu inceleyin.

Öğ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, 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 yönteminden biriyle 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ır olarak ayarlanır.

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

$$A' = BA$$

Göreli dönüşümler, sayfa öğesini şu anki konumundan 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çeklendirme).

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ından yararlanarak 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 presentations.pages.get isteğiyle 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öreceli ç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 çevirmek için (boyutunu, kaymasını veya yönünü değiştirmeden) UpdatePageElementTransformRequest öğesini 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çeklendirme

Ölçeklendirme, bir öğenin boyutunu değiştirmek için X ve/veya Y boyutu boyunca uzatılması ya da sıkıştırılması işlemidir. Temel ö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 bir RELATIVE dönüşümü olarak kullanabilirsiniz ancak bu, öğenin oluşturulan kayma ve çevirisini de etkileyebilir. Öğeyi kayma veya hareket ettirmeyi etkilemeden ölçeklendirmek için referans çerçevesine kaydırın.

Döndürme

Rotasyon, ö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 aşağıdaki biçimdedir. Bu biçimde, saat yönünün tersine hareket eden X eksenine göre dönüş açısı (radyan cinsinden) ö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 bir öğeyi döndürmek için doğrudan RELATIVE dönüşümü olarak kullanabilirsiniz ancak bu, öğenin sayfanın kaynağı hakkında döndürülmesine neden olur. Öğeyi merkezi veya farklı bir nokta etrafında döndürmek için ilgili referans çerçevesine gidin.

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 şekillerdedir:

$$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 bir öğeyi yansıtmak için doğrudan 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 kaydırın.

Öğe referans çerçeveleri

Doğrudan bir sayfa öğesine temel ölçek, yansıtma veya döndürme dönüşümü uygulandığında sayfanın referans çerçevesinde bir dönüşüm oluşturulur. Örneğin, temel bir döndürme, öğeyi sayfanın kaynağıyla (sol üst köşe) ilgili olarak döndürür. Bununla birlikte, örneğin bir öğeyi merkez noktası çevresinde döndürmek için öğenin referans çerçevesinde işlem yapabilirsiniz.

Bir öğeyi kendi referans çerçevesi içinde dönüştürmek için iki çevirinin daha içine alın: öğe merkezini sayfa kaynağına taşıyan bir önceki çeviri T1 ve öğeyi tekrar orijinal konumuna taşıyan sonraki çeviri T2. Tam işlem, matris çarpımı 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 merkezindedir.

Bu dönüşümlerin her birini sıralı RELATIVE dönüşüm istekleri olarak tek tek gerçekleştirmek mümkündür. İdeal olarak, yukarıdaki A' için matris çarpımları yapmanız ve sonucu tek bir ABSOLUTE dönüşümü olarak uygulamanız gerekir. Alternatif olarak, T2 * B * T1 ürününü önceden hesaplayın ve tek bir RELATIVE dönüşümü olarak uygulayın. Bunların ikisi de API işlemleri açısından daha verimlidir ve ardından dönüşüm isteklerini ayrı ayrı 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**
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 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 Slaytlar API'ye göz atın.

Slaytlar API, değerlerinizi yeniden düzenleyebilir

Bir sayfa öğesi oluşturduğunuzda, belirli bir görsel sonuç sağlayan bir boyut ve dönüşüm belirtebilirsiniz. Bununla birlikte 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ı boyutta döndürüleceği garanti edilmez. Ancak dönüşümü hesaba katarsanız aynı sonuçları elde edersiniz.