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

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

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

تتيح لك 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 لتغيير حجم عنصر، ولكن يمكن أن يؤثر ذلك أيضًا في اقتصاص العنصر وترجمته. لتوسيع نطاق العنصر بدون التأثير في قصته أو ترجمته، يمكنك الانتقال إلى الإطار المرجعي.

تدوير

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

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

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

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

يعكس الانعكاس عنصرًا عبر خط أو محور معين. تكون مصفوفة تحويل الانعكاس الأساسية على المحور س وص على الشكل التالي:

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

قد تُعيد واجهة برمجة تطبيقات "العروض التقديمية من Google" ترتيب القيم

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