/// <summary> /// Creates a snapshot of snapshotSlide after exit animations and places an image of the slide in this slide /// Returns the image shape. /// </summary> public Shape InsertExitSnapshotOfSlide(PowerPointSlide snapshotSlide) { PowerPointSlide previousSlideCopy = snapshotSlide.Duplicate(); previousSlideCopy.Shapes .Cast <Shape>() .Where(shape => previousSlideCopy.HasExitAnimation(shape)) .ToList() .ForEach(shape => shape.Delete()); previousSlideCopy.Copy(); Shape slidePicture = _slide.Shapes.PasteSpecial(PpPasteDataType.ppPastePNG)[1]; previousSlideCopy.Delete(); return(slidePicture); }
private static PowerPoint.Shape GetStepBackWithoutBackgroundShapeToZoom(PowerPointSlide currentSlide, PowerPointSlide addedSlide, PowerPointSlide previousSlide) { Globals.ThisAddIn.Application.ActiveWindow.Selection.Unselect(); Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(addedSlide.Index); var copiedShapes = new List<PowerPoint.Shape>(); foreach (PowerPoint.Shape sh in previousSlide.Shapes) { if (!previousSlide.HasExitAnimation(sh) && !Graphics.IsHidden(sh)) { sh.Copy(); PowerPoint.Shape shapeCopy = addedSlide.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(); PowerPoint.Shape previousSlidePicture = addedSlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1]; PowerPointLabsGlobals.CopyShapePosition(shapeGroup, ref previousSlidePicture); previousSlidePicture.Name = "PPTZoomOutShape" + DateTime.Now.ToString("yyyyMMddHHmmssffff"); shapeGroup.Delete(); return previousSlidePicture; }
private static void AddDisappearAnimation(Shape shape, PowerPointSlide inSlide, int effectStartIndex) { if (inSlide.HasExitAnimation(shape)) return; var effectFade = inSlide.GetNativeSlide().TimeLine.MainSequence.AddEffect(shape, MsoAnimEffect.msoAnimEffectAppear, MsoAnimateByLevel.msoAnimateLevelNone, MsoAnimTriggerType.msoAnimTriggerWithPrevious, effectStartIndex); effectFade.Exit = MsoTriState.msoTrue; }