पेज एलिमेंट का साइज़ बदलना और पोज़िशन करना

पेज एलिमेंट का साइज़ और पोज़िशन बदलने के दो अलग-अलग तरीके हैं:

  1. साइज़ और पोज़िशन के लिए, इसके गैटर और सेटर फ़ंक्शन का इस्तेमाल किया जाता है.
  2. इसके अफ़ाइन ट्रांसफ़ॉर्म में हेर-फेर करना. ऐसा करने के लिए, इसके 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() में दिया गया आर्ग्युमेंट नेगेटिव हो सकता है, ताकि पेज एलिमेंट को हॉरिज़ॉन्टल या वर्टिकल तौर पर फ़्लिप करने के लिए, उनका इस्तेमाल किया जा सके.

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° घुमाए गए आकार पर ऊपर दिया गया कोड कैसे काम करता है. ध्यान दें कि पेज एलिमेंट को उसके बाउंडिंग बॉक्स के एक किनारे से फ़्लिप किया गया है, लेकिन इसके बीच में नहीं.

Slides में मौजूद रिफ़्लेक्शन

लाइन का रोटेशन

पेज के दूसरे एलिमेंट की तरह, लाइन का रोटेशन, लाइन का वर्टिकल ऐंगल नहीं, बल्कि इसके बाउंडिंग बॉक्स का रोटेशन होता है. जब तय किए गए स्टार्ट और एंड पॉइंट वाली लाइन बनाई जाती है, तो उसका रोटेशन हमेशा 0° होता है. Google Slides के यूज़र इंटरफ़ेस (यूआई) में लाइन के एंडपॉइंट को खींचने से, इसके वर्टिकल ऐंगल के साथ-साथ इसके बाउंडिंग बॉक्स का साइज़ और जगह भी बदल जाती है, लेकिन इसके रोटेशन में बदलाव नहीं होता. setRotation() का इस्तेमाल करने से, लाइन का बाउंडिंग बॉक्स घूमता है. इससे, लाइन का वर्टिकल ऐंगल बेहतर तरीके से बदल जाता है. इसलिए, दो लाइनों में एक जैसा विज़ुअल वर्टिकल ऐंगल हो सकता है, लेकिन बाउंडिंग बॉक्स अलग-अलग हो सकते हैं. इसलिए, साइज़, पोज़िशन, और रोटेशन वैल्यू अलग-अलग हो सकती हैं.

सीमाएं

साइज़ और पोज़िशन तय करने के कुछ तरीके, पेज के कुछ एलिमेंट के साथ काम नहीं करते. नीचे दी गई टेबल में उन तरीकों के बारे में बताया गया है जो कुछ खास तरह के पेज एलिमेंट के साथ काम नहीं करते हैं.

तरीके आकार वीडियो टेबल
getHeight(), getWidth() नहीं (शून्य दिखाता है)
setHeight(), setWidth() नहीं
setRotation() नहीं नहीं
scaleHeight(), scaleWidth() नहीं

अगर पेज के एलिमेंट में काट-छांट होती है, तो साइज़ और पोज़िशनिंग के सभी तरीकों से अनचाहे नतीजे मिल सकते हैं. सभी सीमाएं बदल सकती हैं. अप-टू-डेट जानकारी के लिए रेफ़रंस देखें.

अफ़िनिटी ट्रांसफ़ॉर्म की सुविधा का इस्तेमाल करना

बेहतर कंट्रोल के लिए, पेज एलिमेंट के साइज़ और पोज़िशन का हिसाब भी लगाया जा सकता है. साथ ही, इसे पहले से मौजूद (नेटिव) साइज़ और अफ़ीम ट्रांसफ़ॉर्म के हिसाब से भी अडजस्ट किया जा सकता है.

Google Apps Script, Google Slides API के तौर पर अफ़ाइन ट्रांसफ़ॉर्म की सुविधा का इस्तेमाल करने के लिए मिलता-जुलता इंटरफ़ेस उपलब्ध कराता है.

  • इस लेख में, अफ़ाइन ट्रांसफ़ॉर्म के सिद्धांतों के बारे में बताया गया है. साथ ही, पहले से मौजूद (नेटिव) साइज़ से रेंडर किए गए साइज़ का पता लगाने और पेज के एलिमेंट के लिए ट्रांसफ़ॉर्म करने का तरीका भी बताया गया है. Apps Script में,
    • पेज एलिमेंट के नेटिव साइज़ के लिए getInherentWidth() और getInherentHeight();
    • पेज एलिमेंट के अफ़ाइन ट्रांसफ़ॉर्म के लिए getTransform().
  • इस लेख में बताया गया है कि स्केलिंग, रोटेशन, रिफ़्लेक्शन वगैरह के लिए, अफ़ाइन ट्रांसफ़ॉर्म की मदद से पेज के एलिमेंट का साइज़ और उनकी पोज़िशन कैसे तय करें. Apps Script में
      इस्तेमाल करें.
    • पेज एलिमेंट के अफ़ाइन रूपांतरण को सेट करने के लिए setTransform() (सटीक मोड के समान);
    • अफ़ाइन ट्रांसफ़ॉर्म को पेज एलिमेंट के मौजूदा ट्रांसफ़ॉर्म (रिएलेटिव मोड की तरह) में, पहले शामिल करने के लिए preconcatenateTransform().

नीचे दी गई स्क्रिप्ट कोई आकार बनाती है, उसका ट्रांसफ़ॉर्म सेट करती है, उसके ओरिजनल साइज़ को पढ़ती है, और उसके अफ़ाइन ट्रांसफ़ॉर्म को पढ़ती है.

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