Exemple #1
0
        /// <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;
        }
Exemple #3
0
        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;
        }