ขนาดและตําแหน่งองค์ประกอบของหน้า

คู่มือนี้อธิบายวิธีปรับขนาดและจัดตำแหน่งองค์ประกอบของหน้าโดยใช้การแปลงแบบแอฟฟิน ด้วย Google สไลด์ API ดูข้อมูลเบื้องต้นเกี่ยวกับแนวคิดของ การแปลงแบบแอฟฟินได้ในคำแนะนำเกี่ยวกับแนวคิดการแปลงและองค์ประกอบหน้า

เปลี่ยนรูปแบบองค์ประกอบ

Slides API ช่วยให้คุณเปลี่ยนตำแหน่งและปรับขนาดองค์ประกอบในหน้าได้ หากต้องการทำเช่นนี้ ให้พิจารณาก่อนว่าต้องใช้การเปลี่ยนรูปแบบประเภทใด แล้วจึงใช้การเปลี่ยนรูปแบบนั้นโดยใช้วิธี presentations.batchUpdate() ที่มีองค์ประกอบ UpdatePageElementTransformRequest อย่างน้อย 1 รายการ

คุณสามารถทำการแปลงโดยใช้ ApplyModeได้ดังนี้

  • 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การแปลงเพื่อปรับขนาดองค์ประกอบได้ แต่การดำเนินการนี้อาจส่งผลต่อการเฉือนและการแปลที่แสดงผลขององค์ประกอบด้วย หากต้องการปรับขนาดองค์ประกอบโดยไม่ส่งผลต่อการเฉือนหรือการเปลี่ยนตำแหน่ง ให้เปลี่ยนไปใช้ กรอบอ้างอิงขององค์ประกอบ

การหมุน

การเปลี่ยนรูปแบบการหมุนจะหมุนองค์ประกอบของหน้าโดยรอบจุดหนึ่งๆ โดยใช้พารามิเตอร์การปรับขนาดและ การเฉือน เมทริกซ์การหมุนพื้นฐานมีการแปลงรูปแบบต่อไปนี้ โดยวัดมุมของการหมุน (เป็นเรเดียน) จากแกน X โดยหมุน ทวนเข็มนาฬิกา

$$R=\begin{bmatrix} cos(\theta) & sin(\theta) & 0\\ -sin(\theta) & cos(\theta) & 0\\ 0 & 0 & 1 \end{bmatrix}$$

เช่นเดียวกับการปรับขนาด คุณสามารถใช้รูปแบบเมทริกซ์นี้โดยตรงเป็น RELATIVEtransform เพื่อหมุนองค์ประกอบ แต่การทำเช่นนี้จะทำให้องค์ประกอบหมุนรอบจุดเริ่มต้น ของหน้าเว็บ หากต้องการหมุนองค์ประกอบรอบจุดกึ่งกลางหรือจุดอื่น ให้เปลี่ยนไปใช้กรอบอ้างอิงขององค์ประกอบนั้น

การทบทวนตนเอง

การสะท้อนจะพลิกองค์ประกอบตามเส้นหรือแกนที่เฉพาะเจาะจง เมทริกซ์การแปลงการสะท้อนแกน 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การเปลี่ยนรูปแบบ เพื่อสะท้อนองค์ประกอบ แต่การทำเช่นนี้จะทำให้องค์ประกอบมีการแปลด้วย หากต้องการ แสดงองค์ประกอบโดยไม่มีการแปล ให้เปลี่ยนไปใช้เฟรมอ้างอิงองค์ประกอบ

เฟรมอ้างอิงขององค์ประกอบ

การใช้การเปลี่ยนรูปแบบการปรับขนาด การหมุน หรือ การสะท้อนพื้นฐานกับองค์ประกอบของหน้าเว็บโดยตรง จะทำให้เกิดการเปลี่ยนรูปแบบในกรอบอ้างอิงของหน้าเว็บ เช่น การหมุนพื้นฐานจะหมุนองค์ประกอบรอบจุดเริ่มต้นของหน้า (มุมบนซ้าย) อย่างไรก็ตาม คุณสามารถดำเนินการในกรอบอ้างอิงขององค์ประกอบได้ เช่น หมุนองค์ประกอบรอบจุดกึ่งกลาง

หากต้องการเปลี่ยนองค์ประกอบภายในกรอบอ้างอิงของตัวเอง ให้ใส่ไว้ระหว่างการแปลอื่นๆ 2 รายการ ได้แก่ การแปลก่อนหน้า T1 ซึ่งย้ายกึ่งกลางขององค์ประกอบ ไปยังจุดเริ่มต้นของหน้า และการแปลถัดไป T2 ซึ่งย้ายองค์ประกอบกลับ ไปยังตำแหน่งเดิม การดำเนินการทั้งหมดสามารถแสดงเป็นผลคูณของเมทริกซ์ได้ดังนี้

$$A' = T2 \times B \times T1 \times A$$

นอกจากนี้ คุณยังเปลี่ยนไปใช้เฟรมอ้างอิงอื่นๆ ได้ด้วยการแปลจุดต่างๆ ไปยังจุดเริ่มต้นแทน จุดเหล่านี้จะกลายเป็นศูนย์กลางของกรอบอ้างอิงใหม่

คุณสามารถทำการเปลี่ยนรูปแบบแต่ละอย่างแยกกันได้โดยใช้RELATIVEคำขอเปลี่ยนรูปแบบตามลำดับ ในทางที่ดี คุณควรคำนวณA' ข้างต้นล่วงหน้าด้วยการคูณเมทริกซ์ แล้วใช้ผลลัพธ์เป็นABSOLUTE การแปลงรายการเดียว หรือจะคำนวณT2 * B * T1ผลิตภัณฑ์ล่วงหน้าแล้วใช้เป็นRELATIVEการแปลงรายการเดียวก็ได้ ทั้ง 2 วิธีนี้มีประสิทธิภาพมากกว่าในแง่ของการดำเนินการ API เมื่อเทียบกับการส่งคำขอการแปลงทีละรายการ

ข้อจำกัด

ฟิลด์การปรับขนาดและการวางตำแหน่งบางรายการใช้ไม่ได้กับองค์ประกอบหน้าเว็บบางประเภท ตารางต่อไปนี้สรุปความเข้ากันได้ขององค์ประกอบหน้าเว็บบางอย่างกับฟิลด์การปรับขนาดและการวางตำแหน่ง

ช่อง รูปร่าง วิดีโอ ตาราง
คำแปล
Scale ไม่ได้**
Shear ไม่ ไม่

หากต้องการอัปเดตขนาดแถวและคอลัมน์ของตาราง ให้ใช้ UpdateTableRowPropertiesRequest และ UpdateTableColumnPropertiesRequest

ฟิลด์การปรับขนาดและการวางตำแหน่งทั้งหมดอาจให้ผลลัพธ์ที่ไม่คาดคิดหากองค์ประกอบหน้าเว็บมีการเฉือน ข้อจำกัดทั้งหมดอาจมีการเปลี่ยนแปลง โปรดดูข้อมูลล่าสุดที่ Google Slides API

ค่าที่ปรับโครงสร้างใหม่

เมื่อสร้างองค์ประกอบหน้าเว็บ คุณสามารถระบุขนาดและเปลี่ยนรูปองค์ประกอบนั้น เพื่อให้ได้ผลลัพธ์ภาพที่ต้องการ อย่างไรก็ตาม Slides API อาจแทนที่ค่าที่คุณระบุด้วยค่าอื่นๆ ที่ให้ลักษณะที่ปรากฏเหมือนกัน โดยทั่วไป หากคุณเขียนขนาดโดยใช้ API ระบบจะไม่รับประกันว่าจะแสดงขนาดเดียวกัน อย่างไรก็ตาม คุณควรได้รับผลลัพธ์เดียวกันหากพิจารณา การแปลง