تغيير حجم عناصر الصفحة وتحديد موضعها

يشرح هذا الدليل كيفية تحديد حجم عناصر الصفحة ووضعها باستخدام عمليات تحويل affine. للحصول على مقدمة مفاهيمية عن عمليات التحويل الأفيني، اطّلِع على دليل المفاهيم المتعلّقة بعمليات التحويل.

تحويل العناصر

تتيح لك واجهة برمجة التطبيقات Slides API إعادة وضع العناصر وتغيير حجمها على الصفحة. لإجراء ذلك، حدِّد أولاً نوع التحويل الذي يجب تطبيقه، ثم طبِّق عملية التحويل باستخدام الأسلوب presentations.batchUpdate الذي يحتوي على عنصر واحد أو أكثر من عناصر UpdatePageElementTransformRequest.

يمكن إجراء عمليات التحويل في أحد هذين applyModes:

  • تعمل عمليات التحويل ABSOLUTE على استبدال مصفوفة التحويل الحالية للعنصر. يتم ضبط أيّ مَعلمات تحذفها من طلب تعديل التحويل على صفر.

  • تتمّ مضاعفة عمليات التحويل RELATIVE بمصفوفة التحويل الحالية للعنصر (يُرجى العِلم أنّ ترتيب الضرب مهم):

$$A' = BA$$

تنقل أو توسّع عمليات التحويل النسبية عنصر الصفحة من مكانه الحالي، على سبيل المثال، نقل شكل 100 نقطة إلى اليسار أو تدويره 40 درجة. تتخلّص عمليات التحويل المطلقة من معلومات الموضع الحالي ودرجة التكبير/التصغير، على سبيل المثال، نقل شكل إلى وسط الصفحة أو تكبيره ليكون بعرض معيّن.

يمكن عادةً التعبير عن عمليات التحويل المعقدة على أنّها تسلسل من عمليات التحويل البسيطة. يمكن أن يؤدي احتساب التحويل مسبقًا إلى تقليل الوقت المستغرَق في العمليات الحسابية غير الضرورية، وذلك من خلال دمج عمليات تحويل متعددة باستخدام ضرب المصفوفات.

بالنسبة إلى بعض العمليات، يجب معرفة مَعلمات التحويل الحالية للعنصر. إذا لم تكن لديك هذه القيم، يمكنك استردادها باستخدام طلب presentations.pages.get.

ترجمة

النقل هو ببساطة نقل عنصر صفحة إلى موضع جديد في الصفحة نفسها. تنقل الترجمات المطلقة العنصر إلى نقطة معيّنة، بينما تنقل الترجمات النسبية العنصر مسافة معيّنة.

يكون شكل مصفوفة التحويل الأساسية للترجمة على النحو التالي:

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

عند استخدام UpdatePageElementTransformRequest لترجمة عنصر (بدون تغيير حجمه أو تمزّقه أو اتجاهه)، يمكنك استخدام إحدى البنى التالية AffineTransform:

// 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'
  }
}

التحجيم

تغيير الحجم هو تمديد عنصر أو تضييق حجمه على طول السمتَين X و/أو Y لتغيير حجمه. يكون شكل مصفوفة التحويل الأساسية للتوسيع على النحو التالي:

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

يمكنك استخدام شكل المصفوفة هذا مباشرةً كتحويل RELATIVE لتغيير حجم العنصر، ولكن يمكن أن يؤثر ذلك أيضًا في القص والترجمة المعروضَين للعنصر. لتكبير العنصر بدون التأثير في تمزّقه أو ترجمته، انقل إلى إطاره المرجعي.

تدوير

تعمل عمليات التحويل الدوراني على تدوير عنصر الصفحة حول نقطة معيّنة باستخدام مَعلمتَي التكبير والتصغير والانحراف. تتّخذ مصفوفة التحويل الأساسية للتدوير الشكل التالي، حيث يتم قياس زاوية التدوير (بالراديان) من محور X، مع التحرك باتجاه عقارب الساعة:

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

كما هو الحال مع التكبير/التصغير، يمكنك استخدام نموذج المصفوفة هذا مباشرةً كRELATIVE تحويل لتدوير عنصر، ولكن يؤدي ذلك إلى تدوير العنصر حول نقطة الأصل للصفحة. لتدوير العنصر حول مركزه أو نقطة مختلفة، انتقِل إلى هذا الإطار المرجعي.

انعكاس الإضاءة

تعكس ميزة "الانعكاس" عنصرًا على طول خط أو محور معيّن. إنّ مصفوفة التحويل الأساسية للانعكاس على محورَي x وy لها الشكلان التاليان:

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

كما هو الحال مع التكبير/التصغير، يمكنك استخدام نموذج المصفوفة هذا مباشرةً كعملية RELATIVE تحويل لعرض عنصر، ولكن يؤدي ذلك إلى ترجمة العنصر أيضًا. لعرض العنصر بدون أيّ ترجمة، انقل إلى إطاره المرجعي.

إطارات مرجعية للعناصر

يؤدي تطبيق عملية تحويل أساسية للتصغير أو الانعكاس أو الدوران مباشرةً على عنصر الصفحة إلى إجراء عملية تحويل في الإطار المرجعي للصفحة. على سبيل المثال، يؤدي الالتفاف الأساسي إلى تدوير العنصر حول نقطة أصل الصفحة (الزاوية العلوية اليسرى). ومع ذلك، يمكنك العمل في الإطار المرجعي لل العنصر نفسه، على سبيل المثال لتدوير عنصر حول نقطة مركزه.

لتحويل عنصر ضمن إطار مرجعي خاص به، احطِط العنصر بين تحوُّلَين آخرين: تحوُّل سابق T1 ينقل مركز العنصر إلى منشأ الصفحة، وتحوُّل لاحق T2 ينقل العنصر إلى موضعه الأصلي. يمكن التعبير عن العملية الكاملة على أنّها حاصل ضرب في مصفوفة:

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

يمكنك أيضًا التبديل إلى أطر مرجعية أخرى، عن طريق ترجمة نقاط مختلفة إلى المصدر بدلاً من ذلك. وتصبح هذه النقاط مركز الإطار المرجعي الجديد.

من الممكن تنفيذ كلّ من عمليات التحويل هذه بشكلٍ فردي كطلبات RELATIVE تحويل متسلسلة. من الأفضل احتساب A' أعلاه مسبقًا باستخدام عمليات ضرب المصفوفات وتطبيق النتيجة كعملية تحويل واحدة ABSOLUTE. بدلاً من ذلك، يمكنك احتساب منتج T2 * B * T1 مسبقًا وتطبيقه كتحويل RELATIVE واحد. إنّ كلاهما أكثر فعالية، من حيث عمليات واجهة برمجة التطبيقات، مقارنةً بإرسال طلبات التحويل بشكلٍ فردي.

القيود

لا تتوافق بعض حقول الحجم والموضع مع بعض أنواع عناصر الصفحة. يلخِّص الجدول أدناه توافق عناصر معيّنة من الصفحة مع حقول الحجم والموضع.

الحقل شكل فيديو جدول
الترجمة
المقياس لا**
القص لا لا

** لتعديل سمات صفوف وأعمدة الجدول، استخدِم UpdateTableRowPropertiesRequest و UpdateTableColumnPropertiesRequest.

قد تؤدي جميع حقول الحجم والموضع إلى نتائج غير متوقّعة إذا كان عنصر الصفحة يتضمّن تمويهًا. وتخضع جميع القيود للتغيير. للحصول على معلومات محدّثة، يُرجى الاطّلاع على Google Slides API.

قد تعيد واجهة برمجة التطبيقات Slides API صياغة قيمك.

عند إنشاء عنصر صفحة، يمكنك تحديد حجم وتحويله لتوفير نتيجة مرئية معيّنة. ومع ذلك، قد تستبدل واجهة برمجة التطبيقات القيمة التي تقدّمها بقيم أخرى تؤدي إلى الظهور المرئي نفسه. بشكل عام، إذا كتبت حجمًا باستخدام واجهة برمجة التطبيقات، لا يمكن ضمان عرض الحجم نفسه. ومع ذلك، من المفترض أن تحصل على النتائج نفسها إذا أخذت عملية التحويل في الاعتبار.