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

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

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

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

การเปลี่ยนรูปแบบทำได้ใน applyModes ดังนี้

  • 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}$$

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

การสะท้อนความรู้สึก

เงาสะท้อนจะสะท้อนองค์ประกอบผ่านเส้นหรือแกนที่เฉพาะเจาะจง เมทริกซ์การแปลงการสะท้อนของแกน 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 รายการเดียว ซึ่งทั้งคู่มีประสิทธิภาพมากกว่าในแง่ของการดำเนินการของ API แล้วจึงส่งคำขอเปลี่ยนรูปแบบทีละรายการ

ข้อจำกัด

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

ฟิลด์ รูปร่าง วิดีโอ ตาราง
คำแปล
Scale ไม่ได้**
การตัด ไม่ได้ ไม่ได้

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

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

Slides API อาจเปลี่ยนโครงสร้างภายในโค้ดของคุณ

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