คู่มือนี้อธิบายวิธีปรับขนาดและจัดตำแหน่งองค์ประกอบของหน้าโดยใช้การแปลงแบบแอฟฟินด้วย Google Slides API หากต้องการดูข้อมูลเบื้องต้นเชิงแนวคิดเกี่ยวกับการแปลงแบบแอฟฟิน โปรดดูคู่มือแนวคิดเกี่ยวกับการแปลงและองค์ประกอบของหน้า
แปลงองค์ประกอบ
Slides API ช่วยให้คุณเปลี่ยนตำแหน่งและปรับขนาดองค์ประกอบในหน้าได้ หากต้องการทำ
เช่นนี้ ให้กำหนดก่อนว่าต้องใช้การแปลงประเภทใด แล้ว
ใช้การแปลงนั้นโดยใช้วิธี
presentations.batchUpdate()
ที่มีองค์ประกอบ
UpdatePageElementTransformRequest
อย่างน้อย 1 รายการ
คุณสามารถทำการแปลงได้โดยใช้ an
ApplyMode ดังนี้
การแปลง
ABSOLUTEจะ แทนที่ เมตริกซ์การแปลงที่มีอยู่ขององค์ประกอบ ระบบจะตั้งค่าพารามิเตอร์ที่คุณละเว้นจากคำขออัปเดตการแปลงเป็น 0การแปลง
RELATIVEจะถูก คูณ ด้วยเมตริกซ์การแปลงที่มีอยู่ขององค์ประกอบ (ลำดับการคูณมีความสำคัญ)
การแปลงแบบสัมพัทธ์จะย้ายหรือปรับขนาดองค์ประกอบของหน้าจากตำแหน่งเดิม เช่น ย้ายรูปร่างไปทางซ้าย 100 จุด หรือหมุน 40 องศา การแปลงแบบสัมบูรณ์จะละทิ้งข้อมูลตำแหน่งและขนาดที่มีอยู่ เช่น ย้ายรูปร่างไปไว้ตรงกลางหน้า หรือปรับขนาดให้มีความกว้างที่เฉพาะเจาะจง
โดยปกติแล้วการแปลงที่ซับซ้อนสามารถแสดงเป็นลำดับของการแปลงที่ง่ายกว่าได้ การคำนวณการแปลงล่วงหน้า ซึ่งเป็นการรวมการแปลงหลายรายการโดยใช้การคูณเมตริกซ์ มักจะช่วยลดค่าใช้จ่ายได้
สำหรับการดำเนินการบางอย่าง คุณต้องทราบพารามิเตอร์การแปลงที่มีอยู่ขององค์ประกอบ หากไม่มีค่าเหล่านี้ คุณสามารถดึงข้อมูลได้โดยใช้วิธี
presentations.pages.get()
การเลื่อน
การเลื่อนคือการดำเนินการย้ายองค์ประกอบของหน้าไปยังตำแหน่งใหม่ในหน้าเดียวกัน การเลื่อนแบบ สัมบูรณ์ จะย้ายองค์ประกอบไปยังจุดที่เฉพาะเจาะจง ในขณะที่การเลื่อนแบบ สัมพัทธ์ จะย้ายองค์ประกอบเป็นระยะทางที่เฉพาะเจาะจง
เมตริกซ์การแปลงการเลื่อนพื้นฐานมีรูปแบบดังนี้
เมื่อใช้
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 เพื่อเปลี่ยนขนาด เมตริกซ์การแปลงการปรับขนาดพื้นฐานมีรูปแบบดังนี้
คุณสามารถใช้รูปแบบเมตริกซ์นี้โดยตรงเป็นการแปลง RELATIVE เพื่อปรับขนาดองค์ประกอบ แต่การดำเนินการนี้อาจส่งผลต่อการเฉือนและการเลื่อนที่แสดงผลขององค์ประกอบด้วย
หากต้องการปรับขนาดองค์ประกอบโดยไม่ส่งผลต่อการเฉือนหรือการเลื่อน ให้เปลี่ยนไปใช้
เฟรมอ้างอิงขององค์ประกอบ
การหมุน
การแปลงการหมุนจะหมุนองค์ประกอบของหน้ารอบจุดหนึ่งโดยใช้พารามิเตอร์การปรับขนาดและการเฉือน เมตริกซ์การแปลงการหมุนพื้นฐานมีรูปแบบดังต่อไปนี้ โดยวัดมุมการหมุน (เป็นเรเดียน) จากแกน X และเคลื่อนที่ทวนเข็มนาฬิกา
เช่นเดียวกับการปรับขนาด คุณสามารถใช้รูปแบบเมตริกซ์นี้โดยตรงเป็นการแปลง RELATIVE เพื่อหมุนองค์ประกอบ แต่การดำเนินการนี้จะทำให้องค์ประกอบหมุนรอบจุดเริ่มต้น ของหน้า หากต้องการหมุนองค์ประกอบรอบจุดกึ่งกลางหรือจุดอื่น
ให้เปลี่ยนไปใช้เฟรมอ้างอิงขององค์ประกอบนั้น
เฟรม
การสะท้อน
การสะท้อนจะสร้างภาพเงาขององค์ประกอบข้ามเส้นหรือแกนที่เฉพาะเจาะจง เมตริกซ์การแปลงการสะท้อนพื้นฐานของแกน x และแกน y มีรูปแบบดังต่อไปนี้
เช่นเดียวกับการปรับขนาด คุณสามารถใช้รูปแบบเมตริกซ์นี้โดยตรงเป็นการแปลง RELATIVE เพื่อสะท้อนองค์ประกอบ แต่การดำเนินการนี้จะทำให้องค์ประกอบเลื่อนด้วย หากต้องการ
สะท้อนองค์ประกอบโดยไม่เลื่อน ให้เปลี่ยนไปใช้เฟรมอ้างอิงขององค์ประกอบ
เฟรมอ้างอิงขององค์ประกอบ
การใช้การแปลงการปรับขนาด การหมุน หรือ การสะท้อนพื้นฐานกับองค์ประกอบ ของหน้าโดยตรงจะสร้างการแปลงในเฟรมอ้างอิงของหน้า ตัวอย่างเช่น การหมุนพื้นฐานจะหมุนองค์ประกอบรอบจุดเริ่มต้นของหน้า (มุมซ้ายบน) อย่างไรก็ตาม คุณสามารถดำเนินการในเฟรมอ้างอิงขององค์ประกอบได้ เช่น หมุนองค์ประกอบรอบจุดศูนย์กลาง
หากต้องการแปลงองค์ประกอบภายในเฟรมอ้างอิงขององค์ประกอบเอง ให้ใส่ไว้ระหว่างการเลื่อนอื่นๆ 2 รายการ ได้แก่ การเลื่อน T1 ก่อนหน้าซึ่งจะย้ายจุดกึ่งกลางขององค์ประกอบไปยังจุดเริ่มต้นของหน้า และการเลื่อน T2 ที่ตามมาซึ่งจะย้ายองค์ประกอบกลับไปยังตำแหน่งเดิม การดำเนินการทั้งหมดสามารถแสดงเป็นผลคูณของเมตริกซ์ได้ดังนี้
นอกจากนี้ คุณยังเปลี่ยนไปใช้เฟรมอ้างอิงอื่นๆ ได้ด้วยการเลื่อนจุดต่างๆ ไปยังจุดเริ่มต้นแทน จุดเหล่านี้จะกลายเป็นจุดกึ่งกลางของเฟรมอ้างอิงใหม่
คุณสามารถทำการแปลงแต่ละรายการเหล่านี้แยกกันเป็นคำขอการแปลง RELATIVE ตามลำดับ ในอุดมคติ คุณควรคำนวณ A'
ด้านบนล่วงหน้าด้วยการคูณเมตริกซ์ แล้วใช้ผลลัพธ์เป็นการแปลง ABSOLUTE
รายการเดียว หรือคำนวณผลคูณ T2 * B * T1 ล่วงหน้า แล้วใช้ผลลัพธ์เป็นการแปลง RELATIVE รายการเดียว ทั้ง 2 วิธีนี้มีประสิทธิภาพมากกว่าในแง่ของการดำเนินการ API เมื่อเทียบกับการส่งคำขอการแปลงทีละรายการ
ข้อจำกัด
ช่องการปรับขนาดและการจัดตำแหน่งบางช่องไม่เข้ากันกับองค์ประกอบของหน้าบางประเภท ตารางต่อไปนี้สรุปความเข้ากันได้ขององค์ประกอบของหน้าบางรายการกับช่องการปรับขนาดและการจัดตำแหน่ง
| ช่อง | รูปร่าง | วิดีโอ | ตาราง |
|---|---|---|---|
| การเลื่อน | ✔ | ✔ | ✔ |
| การปรับขนาด | ✔ | ✔ | ไม่** |
| การเฉือน | ✔ | ไม่ | ไม่ |
หากต้องการอัปเดตขนาดแถวและคอลัมน์ของตาราง ให้ใช้
UpdateTableRowPropertiesRequest
และ
UpdateTableColumnPropertiesRequest
ช่องการปรับขนาดและการจัดตำแหน่งทั้งหมดอาจให้ผลลัพธ์ที่ไม่คาดคิดหากองค์ประกอบของหน้ามีการเฉือน ข้อจำกัดทั้งหมดอาจมีการเปลี่ยนแปลง โปรดดูข้อมูลล่าสุดที่ Google Slides API
ค่าที่ปรับโครงสร้างใหม่
เมื่อสร้างองค์ประกอบของหน้า คุณสามารถระบุขนาดและการแปลงที่ให้ผลลัพธ์ภาพที่ต้องการได้ อย่างไรก็ตาม Slides API อาจแทนที่ค่าที่คุณระบุด้วยค่าอื่นๆ ที่ให้ลักษณะภาพเหมือนกัน โดยทั่วไป หากคุณเขียนขนาดโดยใช้ API ระบบจะไม่รับประกันว่าจะแสดงขนาดเดียวกันกลับมา อย่างไรก็ตาม คุณควรได้รับผลลัพธ์เดียวกันหากคำนึงถึงการแปลง