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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

تتوفّر طريقتان مختلفتان للحصول على حجم أحد عناصر الصفحة وتغييرهما:

  1. استخدام وظائف دالّة ومُعدِّل الحجم والموضع.
  2. التلاعب بالإحالة الناجحة ذات الصلة باستخدام دالتَي getTransform() وsetTransform() مع الحفاظ على الحجم الأساسي

قراءة خصائص عنصر الصفحة

ضبط الحجم والتدوير

كما هو موضّح في الشكل، يتم قياس الحجم والموضع في ما يتعلّق بالمربّع المحدّد لعنصر الصفحة المعروض عندما لا يكون هناك دوران:

  • يسار وأعلى: يتم قياسهما من الزاوية العلوية اليمنى للصفحة إلى الجانب العلوي الأيمن من مربّع تحديد الحدود غير المستدير. يمكنك استخدام getLeft() وgetTop() لقراءة القيم.
  • العرض والارتفاع: عرض مربّع الإحاطة غير المستديرة وارتفاعها. استخدِم getWidth() وgetHeight() لقراءة القيم.
  • التدوير: تدوير عقارب الساعة بالنسبة إلى الخط الرأسي حول منتصف المربّع. استخدِم getRotation() لقراءة القيمة.

يتم قياس كل الأطوال بالنقاط (نقطة). يتم قياس التدوير بالدرجات (°).

إعداد خصائص عناصر الصفحة

يمكنك ضبط حجم عنصر الصفحة وموضعه عند إنشائه باستخدام طريقة إدراج، مثل insertShape(). بالنسبة إلى الشكل الحالي، يمكنك ضبط الحجم والموضع والتدوير، ويمكنك أيضًا تحديد حجم العنصر وتغيير حجمه أو إظهاره على طول أطرافه.

عند الإنشاء

يمكنك تقديم معلومات عن الموضع والحجم عند إنشاء عنصر صفحة.

var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
Logger.log('Left: ' + shape.getLeft() + 'pt; Top: '
                    + shape.getTop() + 'pt; Width: '
                    + shape.getWidth() + 'pt; Height: '
                    + shape.getHeight() + 'pt; Rotation: '
                    + shape.getRotation() + ' degrees.');

ينشئ النص البرمجي أعلاه شكلاً في الشريحة الأولى من العرض التقديمي النشط مع الموضع والحجم المحددين ويقرأ معلومات الموضع والحجم للشكل. السجلّ المتوقع هو:

Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.

الحجم والموضع والتدوير

يمكنك تعديل حجم وموضع عنصر الصفحة بعد إنشائه:

  • يمكنك استخدام setLeft() وsetTop() لضبط موضع الجانب العلوي الأيمن من مربّع الإحاطة غير المستديرة.
  • استخدِم setWidth() وsetHeight() لضبط العرض والارتفاع المعروضَين في مربّع الربط.
  • استخدِم setRotation() لضبط تدوير المربّع حول عقارب الساعة حول مركزه.

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

var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setLeft(100).setTop(200).setWidth(50).setHeight(60).setRotation(90);
Logger.log('Left: ' + shape.getLeft()
                    + 'pt; Top: ' + shape.getTop()
                    + 'pt; Width: ' + shape.getWidth()
                    + 'pt; Height: ' + shape.getHeight()
                    + 'pt; Rotation: ' + shape.getRotation() + '\u00B0.');

في ما يلي نتائج إخراج السجلّ المتوقع من هذا النص:

Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.

يمكن استخدام أدوات ضبط الحجم والموضع والتدوير بأي ترتيب أو تركيبة. سيؤدي استبدال السطر الثالث أعلاه باستخدام النص البرمجي التالي إلى إنشاء النتيجة نفسها:

shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);

التحجيم

بدلاً من استخدام setWidth() وsetHeight() أعلاه لضبط حجم الشكل إلى قيمة مطلقة، يمكن استخدام scaleWidth() وscaleHeight() لتمديد عنصر صفحة أو الضغط عليه باستخدام عامل قياس نسبي.

shape.scaleHeight(0.5).scaleWidth(2);

يمثل الشكل أدناه كيفية عمل الرمز أعلاه على شكل مربّع بزاوية 45 درجة. يُرجى ملاحظة أنّ الزاوية العلوية اليمنى لمربّع الإحاطة هي ثابتة أثناء عملية التحجيم.

تحجيم العروض التقديمية

الانعكاس على طول الحافة

يمكن أن تكون الوسيطة في scaleWidth() وscaleHeight() سالبة بحيث يمكن استخدامها لقلب عنصر صفحة أفقيًا أو عموديًا.

shape.scaleWidth(-1); // Flip horizontally along the left edge of the bounding box.
shape.scaleHeight(-1); // Flip vertically along the top edge of the bounding box.

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

انعكاس الشرائح

تدوير الخط

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

القيود

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

الطُرق شكل فيديو الجدول
getHeight(), getWidth() لا (إرجاع فارغ)
setHeight() وsetWidth() النرويج
setRotation() النرويج النرويج
ScaleHeight() ، المقياسWidthWidth() النرويج

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

استخدام التحويلات ذات الاهتمامات المشتركة

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

يوفر النص البرمجي لـ Google Apps واجهة مشابهة لاستخدام التحويل ذي الاهتمامات المشتركة كواجهة برمجة تطبيقات Google Slides.

  • ولقراءة هذه المقالة، توضّح هذه المقالة مفهوم الإحالة الناجحة ذي الاهتمامات المشتركة وكيفية استنتاج الحجم المعروض من الحجم والتحويل المتأصّلين (للعنصر الأصلي) لعناصر الصفحة. في "برمجة تطبيقات Google"، استخدِم
    • getInherentWidth() وgetInherentHeight() للحجم الأصلي لعناصر الصفحة
    • getTransform() للتحويل النسبي لعناصر الصفحة.
  • لكتابة هذه المقالة، توضّح هذه المقالة كيفية تحديد حجم عناصر الصفحة وتحديد موضعها باستخدام التحويل ذي الاهتمامات المشتركة لتحقيق تقليص وتدوير وانعكاس وما إلى ذلك. في النص البرمجي للتطبيقات، استخدِم
    • setTransform() لضبط التحويل المشترك لعناصر الصفحة (المشابهة لوضع ABSOLUTE)،
    • preconcatenateTransform() للربط المسبق لتحوّل ذي اهتمامات مشتركة إلى التغيير الحالي لعناصر الصفحة (المشابهة لوضع RELATIVE).

ينشئ النص البرمجي التالي شكلاً ويحدّد تحويله ويقرأ حجمه الأساسي ويقرأ تحويله ذي الصلة.

var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setTransform(SlidesApp.newAffineTransformBuilder()
                   .setScaleX(2)
                   .setScaleY(1)
                   .setTranslateX(100)
                   .setTranslateY(200)
                   .build());
Logger.log('Inherent width: ' + shape.getInherentWidth()
                              + 'pt; Inherent height: '
                              + shape.getInherentHeight() + 'pt.');

في ما يلي نتائج إخراج السجلّ المتوقع من هذا النص:

Inherent width: 236.2pt; Inherent height: 236.2pt.

سيكون للشكل الناتج التحويل التالي، وحجم العرض والموضع:

AffineTransform{scaleX=2.0, scaleY=1.0, shearX=0.0, shearY=0.0, translateX=100.0, translateY=200.0}
Left: 100pt; Top: 200pt; Width: 472.4pt; Height: 236.2pt; Rotation: 0°.