จัดการวัตถุ Ink ในการนำเสนอบน Android

บทนำ

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

Aspose.Slides มีประเภทที่จำเป็นสำหรับการทำงานกับวัตถุ Ink ตัวอย่างเช่น อินเทอร์เฟซ IInk แสดงวัตถุ Ink บนสไลด์

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

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

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

ink_powerpoint1

รอย Ink

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

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

ink_powerpoint2

คุณสมบัติของแปรงสำหรับการวาด

แปรงใช้สำหรับวาดเส้นที่เชื่อมต่อจุดของรอย Ink แปรงมีสีและขนาดของตัวเอง ซึ่งแสดงโดยเมธอด IInkBrush.getColor และ IInkBrush.getSize

กำหนดสีแปรง Ink

โค้ด Java นี้แสดงวิธีตั้งค่าสีของแปรง Ink:

import android.graphics.Color;
import com.aspose.slides.*;

Presentation presentation = new Presentation("pres.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IInk ink = (IInk) slide.getShapes().get_Item(0);
    IInkBrush brush = ink.getTraces()[0].getBrush();
    brush.setColor(Color.RED);
} finally {
    presentation.dispose();
}

กำหนดขนาดแปรง Ink

โค้ด Java นี้แสดงวิธีตั้งค่าขนาดของแปรง Ink:

import com.aspose.slides.*;
import com.aspose.slides.android.SizeF;

Presentation presentation = new Presentation("pres.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IInk ink = (IInk) slide.getShapes().get_Item(0);
    IInkBrush brush = ink.getTraces()[0].getBrush();
    SizeF brushSize = new SizeF(5, 10);
    brush.setSize(brushSize);
} finally {
    presentation.dispose();
}

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

ink_powerpoint3

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

ink_powerpoint4

คอนเทนเนอร์ (กรอบ) ไม่คำนึงถึงขนาดของแปรง – มันจะสมมติว่าความหนาของเส้นเป็นศูนย์ (ดูรูปก่อนหน้า)

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

ink_powerpoint5

PowerPoint ใช้พฤติกรรมคล้ายกันสำหรับวัตถุข้อความ:

ink_powerpoint6

ควบคุมลักษณะของ Ink ระหว่างการส่งออกและการแสดงผล

Aspose.Slides มีอินเทอร์เฟซ IInkOptions เพื่อควบคุมวิธีการแสดงผลของวัตถุ Ink ในผลลัพธ์ที่ส่งออกหรือเรนเดอร์ คุณสามารถใช้คุณสมบัติของมันเพื่อซ่อน Ink ทั้งหมดหรือเปลี่ยนวิธีที่การดำเนินการมาสก์ของแปรง Ink ถูกตีความ

ตัวเลือก Ink สามารถตั้งค่าได้ผ่านตัวเลือกการส่งออกหรือการเรนเดอร์สำหรับหลายรูปแบบผลลัพธ์:

ผลลัพธ์ คุณสมบัติของ Ink options
PDF PdfOptions.getInkOptions
HTML HtmlOptions.getInkOptions
SVG SVGOptions.getInkOptions
TIFF TiffOptions.getInkOptions
Slide image RenderingOptions.getInkOptions

เมธอดต่อไปนี้ของ IInkOptions เปิดเผยการตั้งค่าเดียวกันสองอย่าง:

  • IInkOptions.getHideInk กำหนดว่าวัตถุ Ink จะถูกรวมในผลลัพธ์หรือไม่ ค่าเริ่มต้นคือ false
  • IInkOptions.getInterpretMaskOpAsOpacity กำหนดว่าการดำเนินการมาสก์จะถูกตีความเป็นความทึบแสงเมื่อเรนเดอร์แปรง Ink หรือไม่ ค่าเริ่มต้นคือ true; เรียก IInkOptions.setInterpretMaskOpAsOpacity ด้วย false เพื่อใช้การดำเนินการ ROP แทน

ซ่อนวัตถุ Ink ในผลลัพธ์ PDF

โดยค่าเริ่มต้น วัตถุ Ink จะยังคงมองเห็นได้เมื่ิอส่งออก เพื่อสร้างผลลัพธ์ที่สะอาดโดยไม่มีคำอธิบายด้วยมือหรือเนื้อหา Ink อื่น ๆ ให้เรียก IInkOptions.setHideInk ด้วย true

ตัวอย่าง Java ต่อไปนี้ส่งออกงานนำเสนอเป็น PDF พร้อมซ่อนวัตถุ Ink ทั้งหมด:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    PdfOptions pdfOptions = new PdfOptions();
    pdfOptions.getInkOptions().setHideInk(true);

    presentation.save("presentation_without_ink.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

ซ่อนวัตถุ Ink เมื่อเรนเดอร์สไลด์เป็นภาพ

เพื่อซ่อนวัตถุ Ink เมื่อเรนเดอร์สไลด์เป็นภาพบิตแมพ ให้กำหนด RenderingOptions.getInkOptions แล้วส่งตัวเลือกการเรนเดอร์ไปยัง ISlide.getImage

ตัวอย่าง Java ต่อไปนี้เรนเดอร์สไลด์แรกเป็นภาพ PNG โดยไม่มีวัตถุ Ink:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    RenderingOptions renderingOptions = new RenderingOptions();
    renderingOptions.getInkOptions().setHideInk(true);

    ISlide slide = presentation.getSlides().get_Item(0);
    IImage image = slide.getImage(renderingOptions);
    try {
        image.save("slide_without_ink.png", ImageFormat.Png);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

ควบคุมการเรนเดอร์ Mask ของ Ink

การตั้งค่า IInkOptions.getInterpretMaskOpAsOpacity ควบคุมวิธีตีความการดำเนินการมาสก์เมื่อเรนเดอร์แปรง Ink ค่าเริ่มต้นคือ true ซึ่งใช้ความทึบแสง เพื่อใช้การดำเนินการ ROP แทน ให้เรียก IInkOptions.setInterpretMaskOpAsOpacity ด้วย false

ตัวอย่าง Java ต่อไปนี้ส่งออกสไลด์เป็น SVG และใช้การเรนเดอร์แบบ ROP สำหรับการดำเนินการมาสก์ของ Ink:

import com.aspose.slides.*;
import java.io.FileOutputStream;

Presentation presentation = new Presentation("presentation.pptx");
try {
    SVGOptions svgOptions = new SVGOptions();
    svgOptions.getInkOptions().setInterpretMaskOpAsOpacity(false);

    ISlide slide = presentation.getSlides().get_Item(0);
    FileOutputStream stream = new FileOutputStream("slide.svg");
    try {
        slide.writeAsSvg(stream, svgOptions);
    } finally {
        stream.close();
    }
} finally {
    presentation.dispose();
}

การตั้งค่าเดียวกันสามารถนำไปใช้ผ่าน TiffOptions.getInkOptions เมื่อส่งออกงานนำเสนอหรือเรนเดอร์สไลด์เป็น TIFF

เลือกว่าจะซ่อนหรือเก็บ Ink

เมื่อคุณต้องการเวอร์ชันสะอาดของงานนำเสนอที่มีการอธิบายเพื่อแจกจ่ายโดยไม่มีเครื่องหมายตรวจสอบ ให้เรียก IInkOptions.setHideInk ด้วย true ระหว่างการส่งออก

ให้ IInkOptions.getHideInk เป็นค่าเริ่มต้น false เมื่อคำอธิบาย Ink เป็นส่วนหนึ่งของเนื้อหาที่ต้องการ เช่น ความคิดเห็นในการตรวจสอบ, โน้ตมือ, ไฮไลท์ หรือการวาดที่ควรแสดงในผลลัพธ์ที่ส่งออก วิธีนี้ทำให้แอปพลิเคชันสามารถสร้างผลลัพธ์การตรวจสอบและผลลัพธ์ขั้นสุดท้ายแยกกันจากงานนำเสนอเดียวกันโดยไม่ต้องแก้ไขวัตถุ Ink ต้นฉบับ

คำถามที่พบบ่อย

สามารถเปลี่ยนสีหรือขนาดของเส้น Ink ที่มีอยู่ได้หรือไม่?

ได้ ให้ดึงรอยจาก IInk.getTraces แล้วเปลี่ยน IInkTrace.getBrush เรียก IInkBrush.setColor หรือ IInkBrush.setSize เพื่อเปลี่ยนแปรง

การซ่อน Ink ทำให้งานนำเสนอแหล่งที่มาถูกเปลี่ยนหรือไม่?

ไม่ การเรียก IInkOptions.setHideInk มีผลเพียงต่อผลลัพธ์ที่เรนเดอร์หรือส่งออกเท่านั้น ไม่ได้ลบหรือแก้ไขวัตถุ Ink ในงานนำเสนอแหล่งที่มา

รูปแบบการส่งออกใดบ้างที่รองรับตัวเลือก Ink?

คุณสามารถกำหนดตัวเลือก Ink สำหรับ PDF, HTML, SVG, TIFF และภาพสไลด์แบบบิตแมพผ่านตัวเลือกการส่งออกหรือการเรนเดอร์ที่แสดงในตารางด้านบน

เอกสารเพิ่มเติม