عمليات التحويل

تتيح لك Google Slides API معالجة موقع وحجم واتجاه PageElement (مربعات النص والصور والجداول والأشكال الأساسية) على الصفحة، مع الاحتفاظ بالسطور المستقيمة والنقاط المحمية والخطوط المتوازية. وتُعرف هذه الروابط باسم التقارب عمليات التحويل. توضح الأمثلة هنا بعض عمليات التحويل الشائعة لعناصر الصفحة العمليات باستخدام presentations.batchUpdate .

تستخدم هذه الأمثلة المتغيرات التالية:

  • PRESENTATION_ID: يشير إلى مكان تقديم عرض تقديمي المعرّف يمكنك اكتشاف قيمة هذا المعرّف من عنوان URL للعرض التقديمي.
  • PAGE_ID: يشير إلى مكان تقديم عنصر الصفحة. المعرّف يمكنك استرداد قيمة هذه السمة من عنوان URL أو باستخدام طلب قراءة من واجهة برمجة التطبيقات.
  • PAGE_ELEMENT_ID—يشير إلى مكان تقديم الصفحة معرف عنصر العنصر. إِنْتَ يمكنك تحديد هذا المعرف للعناصر التي تقوم بإنشائها (باستخدام بعض القيود) أو السماح لواجهة Slides API بإنشاء حساب تلقائيًا. أرقام تعريف العناصر ويمكن استردادها من خلال طلب قراءة لواجهة برمجة التطبيقات.

ويتم تقديم هذه الأمثلة في صورة طلبات HTTP لتكون محايدة اللغة. للتعلّم كيفية تنفيذ تحديث مجمّع بلغات مختلفة باستخدام Google API مكتبات العملاء، راجع إضافة أشكال النص.

مثال على شكل السهم

في الأمثلة التالية، لنفترض أنّ هناك مثالًا لصفحة على شكل سهم. ذات الحجم التالي وتحويل البيانات (والتي يمكن العثور عليها باستخدام presentations.pages.get طلب الطريقة). يستخدم الشكل النموذج القياس unit EMU (وحدة قياس إنجليزية) ونقطة (نقطة).

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 0.3,
    "scaleY": 0.12,
    "shearX": 0,
    "shearY": 0,
    "translateX": 2000000,
    "translateY":  550000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RIGHT_ARROW"
  }
}

محاذاة عنصر مع عنصر آخر

ما يلي: presentations.batchUpdate نموذج التعليمات البرمجية كيفية استخدام CreateShapeRequest لإنشاء أشكال جديدة في المواضع الصحيحة التي تتم محاذاتها مع مثال على شكل سهم على الصفحة في كلتا الحالتين، تشير X وY إحداثيات الزاوية العلوية اليسرى للشكل الجديد.

ينشئ الطلب الأول مستطيلاً مقاس 100 × 50 نقطة تتم محاذاته مع اليسار حدود شكل السهم، ولكن تم وضعه على 50 نقطة (50 * 12,700 = 635,000 وحدة إحصائيية إجمالية) أسفل الحافة العلوية للسهم. يجب أن يكون الإحداثي السيني للمستطيل الجديد هو نفس الإحداثي السيني للسهم للحفاظ على محاذاة حده الأيسر. حرف Y الإحداثي هو نفسه الإحداثي Y للسهم زائد 50 نقطة، حيث إن يتم قياس المسافة من أعلى السهم. إحداثيات المستطيل وبالتالي:

x" = 2000000 EMU
y" = 550000 + (50 * 12700) = 1185000 EMU

وينشئ الطلب الثاني دائرة بعرض 40 نقطة ولها نفس الخط الأوسط كمثال للسهم، ولكن تم وضعه في 100 نقطة (1270000 وحدة EMU) على يمين الحافة اليمنى للسهم. والإحداثي السيني (س) للدائرة هي حاصل جمع الإحداثي X للسهم وعرض السهم و100 نقطة. فرض إنشاء خط مركز لمحاذاة الدائرة الجديدة مع مراعاة ارتفاع كل من السهم والدائرة. الإحداثي Y للدائرة هو الإحداثي Y للسهم جمع نصف ارتفاع السهم ناقص نصف ارتفاع الدائرة. في كلتا الحالتين، يجب أيضًا مراعاة عوامل القياس المرتبطة بالسهم، لأنّها تؤثر في العرض والارتفاع للسهم المعروضَين الإحداثيات هي:

x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU
y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU

فيما يلي بروتوكول الطلب لمحاذاة عنصر مع عنصر آخر:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "shapeType": "RECTANGLE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 100,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 2000000,
            "translateY": 1185000,
            "unit": "EMU"
          }
        }
      }
    },
    {
      "createShape": {
        "shapeType": "ELLIPSE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 40,
              "unit": "PT"
            },
            "height": {
              "magnitude": 40,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4170000,
            "translateY":  476000,
            "unit": "EMU"
          }
        }
      }
    }
  ]
}

نقل عنصر

ما يلي: presentations.batchUpdate نموذج التعليمات البرمجية كيفية استخدام UpdatePageElementTransformRequest لترجمة عنصر الصفحة شكل سهم النموذج في بطريقتين مختلفتين.

ينقل الطلب الأول في الدفعة السهم إلى (X,Y) = (2000000, 150000) إحداثيات EMU (باستخدام ترجمة مطلقة applyMode). يؤدي الطلب الثاني في الدفعة إلى تحريك السهم من هناك، وهذه المرة بمقدار 40,000 وحدة EMU إلى اليسار و35,000 وحدة قياس إماراتية (EMU) في أعلى (باستخدام ترجمة نسبية applyMode). مصفوفات التحويل1 المستخدمة لتجنب تغيير حجم العنصر واتجاهه.

بعد تنفيذ كلا الطلبين، يقع الجانب العلوي الأيسر للسهم على (X،Y) = (2040000, 115000) إحداثيات EMU.

فيما يلي بروتوكول الطلب لنقل أحد العناصر:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "ABSOLUTE",
        "transform": {
            "scaleX": 0.3,
            "scaleY": 0.12,
            "translateX": 2000000,
            "translateY":  150000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX":  40000,
            "translateY": -35000,
            "unit": "EMU"
        }
      }
    }
  ]
}

عكس عنصر

ما يلي: presentations.batchUpdate نموذج التعليمات البرمجية كيفية استخدام UpdatePageElementTransformRequest لإظهار عنصر الصفحة شكل سهم النموذج أفقيًا بطول مركزه، دون تغيير موضعه على الصفحة أو والتحجيم.

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

بالنسبة إلى عمليات تحويل الترجمة، يتم نقل مركز شكل السهم من وإلى الأصل. قيم المَعلمات كعمليات حسابية من أجل الوضوح.

في ما يلي بروتوكول الطلب الذي يعكس أحد العناصر:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX": -2000000 - 0.5 * 0.3  * 3000000,
            "translateY":  -550000 - 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": -1,
            "scaleY":  1,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

تغيير حجم عنصر

ما يلي: presentations.batchUpdate نموذج التعليمات البرمجية كيفية استخدام UpdatePageElementTransformRequest لتغيير حجم عنصر صفحة شكل سهم المثال ليكون 50% أوسع ولا يتجاوز ارتفاعها 80٪ فقط من ارتفاعها الحالي، مع الحفاظ على مركز السهم في نفس الوضع ويحافظ على اتجاهه.

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

بالنسبة إلى عمليات تحويل الترجمة، يتم نقل مركز شكل السهم من وإلى الأصل. قيم المَعلمات كعمليات حسابية من أجل الوضوح.

فيما يلي بروتوكول الطلب لتغيير حجم أحد العناصر:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1.5,
            "scaleY": 0.8,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

تدوير عنصر حول مركزه

ما يلي: presentations.batchUpdate نموذج التعليمات البرمجية كيفية استخدام UpdatePageElementTransformRequest طريقة تدوير مثال شكل السهم عنصر الصفحة 35 درجات عكس عقارب الساعة، مع الإبقاء على مركز السهم في نفس الموضع والحفاظ على حجمه.

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

بالنسبة إلى عمليات تحويل الترجمة، يتم نقل مركز شكل السهم من وإلى الأصل. قيم المَعلمات كعمليات حسابية من أجل الوضوح.

فيما يلي بروتوكول الطلب لتدوير عنصر حول مركزه:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  cos(35 * (pi/180)),
            "scaleY":  cos(35 * (pi/180)),
            "shearX":  sin(35 * (pi/180)),
            "shearY": -sin(35 * (pi/180)),
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}