هناك طريقتان مختلفتان للحصول على حجم عنصر الصفحة وموضعه وتغييرهما:
- باستخدام وظائف إرجاع القيمة وتحديد القيمة للحجم والموضع
- تعديل التحويل التشابهي باستخدام الدالتين
getTransform()وsetTransform()مع الحفاظ على الحجم الأصلي
قراءة خصائص عناصر الصفحة

كما هو موضّح في الشكل، يتم قياس الحجم والموضع بالنسبة إلى المربّع المحيط لعنصر صفحة معروضة عندما لا يكون هناك تدوير:
- اليسار والأعلى: يتم قياسهما من الزاوية العلوية اليسرى للصفحة إلى الزاوية العلوية اليسرى لمربّع الإحاطة غير المُدار. استخدِم
getLeft()وgetTop()لقراءة القيم. - العرض والارتفاع: عرض المربّع المحيط غير المُدار وارتفاعه
استخدِم
getWidth()وgetHeight()لقراءة القيم. - التدوير: التدوير في اتجاه عقارب الساعة بالنسبة إلى الخط العمودي حول مركز المربّع المحيط استخدِم
getRotation()لقراءة القيمة.
يتم قياس جميع الأطوال بالنقاط (pt). ويتم قياس التدوير بالدرجات (°).
ضبط خصائص عنصر الصفحة
اضبط حجم عنصر الصفحة وموضعه عند إنشائه باستخدام طريقة إدراج، مثل 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() سالبة، ما يتيح استخدامها لعكس عنصر صفحة أفقيًا أو عموديًا.
// Flip horizontally along the left edge of the bounding box.
shape.scaleWidth(-1);
// Flip vertically along the top edge of the bounding box.
shape.scaleHeight(-1);
يوضّح الشكل التالي طريقة عمل الرمز السابق على شكل تم تدويره بزاوية 45 درجة. يُرجى العِلم أنّه يتم قلب عنصر الصفحة على طول أحد حواف المربّع المحيط به وليس على طول مركزه.

تدوير الخط
كما هو الحال مع عناصر الصفحة الأخرى، لا يمثّل دوران الخط الزاوية العمودية للخط، بل يمثّل دوران المربّع المحيط به. عند إنشاء خط بنقطتَي بداية ونهاية محدّدتين، تكون زاوية دورانه دائمًا 0 درجة. يؤدي سحب نقطتَي نهاية الخط في واجهة مستخدم "العروض التقديمية من Google" إلى تغيير الزاوية العمودية بالإضافة إلى حجم المربع المحيط وموضعه، ولكنّه لا يغيّر زاوية الدوران. يؤدي استخدام setRotation() إلى تدوير المربّع المحيط بالخط،
ما يؤدي إلى تغيير زاويته العمودية. وبالتالي، يمكن أن يكون لخطَّين الزاوية الرأسية المرئية نفسها، ولكن يختلفان في المربّعات المحيطة، وبالتالي يختلفان في قيم الحجم والموضع والتدوير.
القيود
بعض طرق تحديد الحجم والموضع غير متوافقة مع بعض أنواع عناصر الصفحة. يلخّص الجدول التالي الطرق غير المتوافقة مع أنواع معيّنة من عناصر الصفحة.
| الطُرق | الشكل | فيديو | جدول |
|---|---|---|---|
| getHeight(), getWidth() | ✔ | ✔ | لا (تعرض قيمة فارغة) |
| setHeight(), setWidth() | ✔ | ✔ | لا |
| setRotation() | ✔ | لا | لا |
| scaleHeight(), scaleWidth() | ✔ | ✔ | لا |
قد تؤدي جميع طرق تحديد الحجم والموضع إلى نتائج غير متوقّعة إذا كان عنصر الصفحة يتضمّن قصًا. جميع القيود قابلة للتغيير. يُرجى الرجوع إلى المرجع للحصول على أحدث المعلومات.
استخدام عمليات التحويل الأفيني
للحصول على تحكّم متقدّم، يمكن أيضًا احتساب حجم عنصر الصفحة وموضعه وتعديلهما من خلال حجمه الأصلي والتحويل الأفيني.
توفّر برمجة تطبيقات Google واجهة مشابهة لواجهة Google Slides API لاستخدام عمليات التحويل التشابهية.
- لقراءة الخصائص، يمكنك استخدام تحويل تشابهي يوضّح كيفية تغيير حجم العنصر وتدويره وقصه وتحديد موضعه. للتعرّف على كيفية استخدام ميزة "التحويل" والحجم الأصلي (المضمّن) لعنصر من أجل حساب حجمه المرئي على شريحة، اطّلِع على عمليات التحويل. في
برمجة تطبيقات، استخدِم:
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°.