สร้างแอนิเมชันแผนภูมิ PowerPoint ใน Java

คำนำ

Aspose.Slides for Java รองรับการทำแอนิเมชันให้กับองค์ประกอบของแผนภูมิ Series, Categories, Series Elements, Categories Elements สามารถทำแอนิเมชันได้ด้วยเมธอด ISequence.addEffect และสอง enum คือ EffectChartMajorGroupingType และ EffectChartMinorGroupingType

การแอนิเมชันซีรีส์แผนภูมิ

หากคุณต้องการทำแอนิเมชันซีรีส์ของแผนภูมิ ให้เขียนโค้ดตามขั้นตอนด้านล่าง:

  1. โหลดพรีเซนเทชัน.
  2. ดึงอ้างอิงของออบเจกต์แผนภูมิ.
  3. ทำแอนิเมชันให้กับซีรีส์.
  4. เขียนไฟล์พรีเซนเทชันไปยังดิสก์.

ในตัวอย่างด้านล่าง เราได้ทำแอนิเมชันซีรีส์ของแผนภูมิ.

// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนของไฟล์พรีเซนเทชัน
Presentation pres = new Presentation("ExistingChart.pptx");
try {
    // ดึงอ้างอิงของออบเจกต์แผนภูมิ
    ISlide slide = pres.getSlides().get_Item(0);
    IShapeCollection shapes = slide.getShapes();
    IChart chart = (IChart) shapes.get_Item(0);

    // ทำแอนิเมชันให้กับซีรีส์
    slide.getTimeline().getMainSequence().addEffect(chart, EffectType.Fade, EffectSubtype.None,
            EffectTriggerType.AfterPrevious);

    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart,
            EffectChartMajorGroupingType.BySeries, 0,
            EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart,
            EffectChartMajorGroupingType.BySeries, 1,
            EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart,
            EffectChartMajorGroupingType.BySeries, 2,
            EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart,
            EffectChartMajorGroupingType.BySeries, 3,
            EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    // เขียนพรีเซนเทชันที่แก้ไขแล้วลงดิสก์
    pres.save("AnimatingSeries_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

การแอนิเมชันหมวดหมู่ของแผนภูมิ

หากคุณต้องการทำแอนิเมชันหมวดหมู่ของแผนภูมิ ให้เขียนโค้ดตามขั้นตอนด้านล่าง:

  1. โหลดพรีเซนเทชัน.
  2. ดึงอ้างอิงของออบเจกต์แผนภูมิ.
  3. ทำแอนิเมชันให้กับหมวดหมู่.
  4. เขียนไฟล์พรีเซนเทชันไปยังดิสก์.

ในตัวอย่างด้านล่าง เราได้ทำแอนิเมชันหมวดหมู่ของแผนภูมิ.

// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนของไฟล์พรีเซนเทชัน
Presentation pres = new Presentation("ExistingChart.pptx");
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IShapeCollection shapes = slide.getShapes();
    IChart chart = (IChart) shapes.get_Item(0);

    slide.getTimeline().getMainSequence().addEffect(chart, EffectType.Fade, EffectSubtype.None,
            EffectTriggerType.AfterPrevious);

    ((Sequence) slide.getTimeline().getMainSequence()).addEffect(chart,
            EffectChartMajorGroupingType.ByCategory, 0, 
            EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    
    ((Sequence) slide.getTimeline().getMainSequence()).addEffect(chart, 
            EffectChartMajorGroupingType.ByCategory, 1, 
            EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    
    ((Sequence) slide.getTimeline().getMainSequence()).addEffect(chart, 
            EffectChartMajorGroupingType.ByCategory, 2, 
            EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    
    ((Sequence) slide.getTimeline().getMainSequence()).addEffect(chart, 
            EffectChartMajorGroupingType.ByCategory, 3, 
            EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    pres.save("Sample_Animation_C.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

การแอนิเมชันในองค์ประกอบของซีรีส์

หากคุณต้องการทำแอนิเมชันองค์ประกอบของซีรีส์ ให้เขียนโค้ดตามขั้นตอนด้านล่าง:

  1. โหลดพรีเซนเทชัน.
  2. ดึงอ้างอิงของออบเจกต์แผนภูมิ.
  3. ทำแอนิเมชันให้กับองค์ประกอบของซีรีส์.
  4. เขียนไฟล์พรีเซนเทชันไปยังดิสก์.

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

// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนของไฟล์พรีเซนเทชัน
Presentation pres = new Presentation("ExistingChart.pptx");
try {
    // ดึงอ้างอิงของออบเจกต์แผนภูมิ
    ISlide slide = pres.getSlides().get_Item(0);
    IShapeCollection shapes = slide.getShapes();
    IChart chart = (IChart) shapes.get_Item(0);

    // ทำแอนิเมชันให้กับองค์ประกอบของซีรีส์
    slide.getTimeline().getMainSequence().addEffect(chart, EffectType.Fade, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            0, 0, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            0, 1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            0, 2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            0, 3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            1, 0, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            1, 1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            1, 2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            1, 3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            2, 0, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            2, 1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            2, 2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInSeries, 
            2, 3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    // เขียนไฟล์พรีเซนเทชันลงดิสก์ 
    pres.save("AnimatingSeriesElements_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

การแอนิเมชันในองค์ประกอบของหมวดหมู่

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

  1. โหลดพรีเซนเทชัน.
  2. ดึงอ้างอิงของออบเจกต์แผนภูมิ.
  3. ทำแอนิเมชันให้กับองค์ประกอบของหมวดหมู่.
  4. เขียนไฟล์พรีเซนเทชันไปยังดิสก์.

ในตัวอย่างด้านล่าง เราได้ทำแอนิเมชันองค์ประกอบของหมวดหมู่.

// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนของไฟล์พรีเซนเทชัน
Presentation pres = new Presentation("ExistingChart.pptx");
try {
    // ดึงอ้างอิงของออบเจกต์แผนภูมิ
    ISlide slide = pres.getSlides().get_Item(0);
    IShapeCollection shapes = slide.getShapes();
    IChart chart = (IChart) shapes.get_Item(0);

    // ทำแอนิเมชันให้กับองค์ประกอบของหมวดหมู่
    slide.getTimeline().getMainSequence().addEffect(chart, EffectType.Fade, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            0, 0, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            0, 1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            0, 2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            0, 3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            1, 0, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            1, 1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            1, 2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            1, 3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            2, 0, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            2, 1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            2, 2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    ((Sequence)slide.getTimeline().getMainSequence()).addEffect(chart, EffectChartMinorGroupingType.ByElementInCategory, 
            2, 3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    // เขียนไฟล์พรีเซนเทชันลงดิสก์
    pres.save("AnimatingCategoriesElements_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

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

ประเภทเอฟเฟกต์ที่ต่างกัน (เช่น การเข้า, การเน้น, การออก) รองรับสำหรับแผนภูมิแบบเดียวกับรูปร่างทั่วไปหรือไม่?

ใช่. แผนภูมิถือเป็นรูปร่าง ดังนั้นจึงรองรับประเภทเอฟเฟกต์แอนิเมชันมาตรฐาน รวมถึงการเข้า, การเน้น, และการออก โดยสามารถควบคุมเต็มที่ผ่านไทม์ไลน์และลำดับแอนิเมชันของสไลด์.

Can I combine chart animation with slide transitions?

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

Are chart animations preserved when saving to PPTX?

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

Can I read existing chart animations from a presentation and modify them?

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

Can I produce a video that includes chart animations using Aspose.Slides?

ใช่. คุณสามารถ export a presentation to video พร้อมคงเอฟเฟกต์แอนิเมชัน, ตั้งค่าเวลาและการตั้งค่าอื่น ๆ ของการส่งออก เพื่อให้คลิปที่ได้สะท้อนการเล่นแอนิเมชัน.