จัดการวัตถุอินค์ของงานนำเสนอด้วย C++

บทนำ

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

Aspose.Slides มีอินเทอร์เฟซ Aspose.Slides.Ink ซึ่งประกอบด้วยประเภทที่คุณต้องการเพื่อสร้างและจัดการวัตถุอินค์

ความแตกต่างระหว่างวัตถุปกติและวัตถุอินค์

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

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

ink_powerpoint1

รอยเท้า Inkshape

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

รูปแบบการเข้ารหัสที่ง่ายที่สุดระบุพิกัด X และ Y ของแต่ละจุดตัวอย่าง เมื่อจุดที่เชื่อมต่อทั้งหมดถูกเรนเดอร์ จะได้ภาพเช่นนี้:

ink_powerpoint2

คุณสมบัติ Brush สำหรับการวาด

คุณสามารถใช้ brush เพื่อวาดเส้นที่เชื่อมต่อจุดขององค์ประกอบรอยเท้าได้ Brush มีสีและขนาดของตัวเอง ซึ่งสอดคล้องกับคุณสมบัติ Brush.Color และ Brush.Size

ตั้งค่าสี Brush อินค์

โค้ด C++ นี้แสดงวิธีตั้งค่าสีสำหรับ brush:

System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");

System::SharedPtr<IInk> ink = System::ExplicitCast<IInk>(pres->get_Slide(0)->get_Shape(0));
System::ArrayPtr<System::SharedPtr<IInkTrace>> traces = ink->get_Traces();
System::SharedPtr<IInkBrush> brush = traces[0]->get_Brush();
System::Drawing::Color brushColor = brush->get_Color();
brush->set_Color(System::Drawing::Color::get_Red());

ตั้งค่าขนาด Brush อินค์

โค้ด C++ นี้แสดงวิธีตั้งค่าขนาดสำหรับ brush:

System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");

System::SharedPtr<IInk> ink = System::ExplicitCast<IInk>(pres->get_Slide(0)->get_Shape(0));
System::ArrayPtr<System::SharedPtr<IInkTrace>> traces = ink->get_Traces();
System::SharedPtr<IInkBrush> brush = traces[0]->get_Brush();
System::Drawing::SizeF brushSize = brush->get_Size();
brush->set_Size(System::Drawing::SizeF(5.0f, 10.0f));

โดยทั่วไป ความกว้างและความสูงของ brush จะไม่ตรงกัน จึงทำให้ PowerPoint ไม่แสดงขนาดของ brush (ส่วนข้อมูลจะเป็นสีเทา) แต่เมื่อความกว้างและความสูงของ brush ตรงกัน PowerPoint จะแสดงขนาดของมันดังนี้:

ink_powerpoint3

เพื่อความชัดเจน ให้เพิ่มความสูงของวัตถุอินค์และตรวจสอบมิติที่สำคัญ:

ink_powerpoint4

คอนเทนเนอร์ (กรอบ) ไม่พิจารณาขนาดของ brush — มันสมมติว่าความหนาของเส้นเป็นศูนย์ (ดูรูปภาพสุดท้าย)

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

ink_powerpoint5

PowerPoint แสดงพฤติกรรมเดียวกันเมื่อทำงานกับข้อความ:

ink_powerpoint6

Further reading

  • เพื่ออ่านเกี่ยวกับรูปทรงโดยทั่วไป ให้ดูส่วน PowerPoint Shapes
  • สำหรับข้อมูลเพิ่มเติมเกี่ยวกับค่าที่มีประสิทธิภาพ ให้ดู Shape Effective Properties