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

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

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

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

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

يعكس الانعكاس عنصرًا عبر خط أو محور معين. تكون مصفوفة تحويل الانعكاس الأساسية للمحور 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.

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

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