/// <summary> /// Creates a snapshot of snapshotSlide before entry animations and places an image of the slide in this slide /// Returns the image shape. /// </summary> public Shape InsertEntrySnapshotOfSlide(PowerPointSlide snapshotSlide) { PowerPointSlide nextSlideCopy = snapshotSlide.Duplicate(); nextSlideCopy.Shapes .Cast <Shape>() .Where(shape => nextSlideCopy.HasEntryAnimation(shape)) .ToList() .ForEach(shape => shape.Delete()); nextSlideCopy.Copy(); Shape slidePicture = _slide.Shapes.PasteSpecial(PpPasteDataType.ppPastePNG)[1]; nextSlideCopy.Delete(); return(slidePicture); }
//Return picture copy of next slide where shapes with exit animations have been deleted private static PowerPoint.Shape GetNextSlidePictureWithoutBackground(PowerPointSlide currentSlide, PowerPointSlide nextSlide, out PowerPoint.Shape pictureOnNextSlide) { Globals.ThisAddIn.Application.ActiveWindow.Selection.Unselect(); Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(nextSlide.Index); List<PowerPoint.Shape> shapesOnNextSlide = new List<PowerPoint.Shape>(); foreach (PowerPoint.Shape sh in nextSlide.Shapes) { if (!nextSlide.HasEntryAnimation(sh) && !Graphics.IsHidden(sh)) shapesOnNextSlide.Add(sh); } var copiedShapes = new List<PowerPoint.Shape>(); foreach (PowerPoint.Shape sh in shapesOnNextSlide) { sh.Copy(); var shapeCopy = nextSlide.Shapes.Paste()[1]; PowerPointLabsGlobals.CopyShapeAttributes(sh, ref shapeCopy); copiedShapes.Add(shapeCopy); } SelectAllShape(copiedShapes); PowerPoint.Selection sel = Globals.ThisAddIn.Application.ActiveWindow.Selection; PowerPoint.Shape shapeGroup = null; if (sel.ShapeRange.Count > 1) shapeGroup = sel.ShapeRange.Group(); else shapeGroup = sel.ShapeRange[1]; shapeGroup.Copy(); pictureOnNextSlide = nextSlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1]; PowerPointLabsGlobals.CopyShapePosition(shapeGroup, ref pictureOnNextSlide); shapeGroup.Delete(); pictureOnNextSlide.Copy(); PowerPoint.Shape slidePicture = currentSlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1]; return slidePicture; }
private static void AddAppearAnimation(Shape shape, PowerPointSlide inSlide, int effectStartIndex) { if (inSlide.HasEntryAnimation(shape)) return; var effectFade = inSlide.GetNativeSlide().TimeLine.MainSequence.AddEffect(shape, MsoAnimEffect.msoAnimEffectAppear, MsoAnimateByLevel.msoAnimateLevelNone, MsoAnimTriggerType.msoAnimTriggerWithPrevious, effectStartIndex); effectFade.Exit = MsoTriState.msoFalse; }