/// <summary>
        /// Preloads a shape within the slide to reduce lag. Call after the animations for the shape have been created.
        /// </summary>
        public static void PreloadShape(PowerPointSlide animationSlide, PowerPoint.Shape shape, bool addCoverImage = true)
        {
            // The cover image is used to cover the screen while the preloading happens behind the cover image.
            PowerPoint.Shape coverImage = null;
            if (addCoverImage)
            {
                coverImage      = shape.Duplicate()[1];
                coverImage.Left = shape.Left;
                coverImage.Top  = shape.Top;
                animationSlide.RemoveAnimationsForShape(coverImage);
            }

            float originalWidth  = shape.Width;
            float originalHeight = shape.Height;
            float originalLeft   = shape.Left;
            float originalTop    = shape.Top;

            // fit the shape exactly in the screen for preloading.
            float scaleRatio = Math.Min(PowerPointPresentation.Current.SlideWidth / shape.Width,
                                        PowerPointPresentation.Current.SlideHeight / shape.Height);

            animationSlide.RelocateShapeWithoutPath(shape, 0, 0, shape.Width * scaleRatio, shape.Height * scaleRatio);

            MsoAnimTriggerType trigger      = PowerPoint.MsoAnimTriggerType.msoAnimTriggerWithPrevious;
            Effect             effectMotion = AddMotionAnimation(animationSlide, shape, shape.Left, shape.Top, originalLeft + (originalWidth - shape.Width) / 2, originalTop + (originalHeight - shape.Height) / 2, 0, ref trigger);
            Effect             effectResize = AddResizeAnimation(animationSlide, shape, shape.Width, shape.Height, originalWidth, originalHeight, 0, ref trigger);

            // Make "cover" image disappear after preload.
            PowerPoint.Effect effectDisappear = null;
            if (addCoverImage)
            {
                Sequence sequence = animationSlide.TimeLine.MainSequence;
                effectDisappear = sequence.AddEffect(coverImage, PowerPoint.MsoAnimEffect.msoAnimEffectFade,
                                                     PowerPoint.MsoAnimateByLevel.msoAnimateLevelNone,
                                                     PowerPoint.MsoAnimTriggerType.msoAnimTriggerWithPrevious);
                effectDisappear.Exit            = Office.MsoTriState.msoTrue;
                effectDisappear.Timing.Duration = 0.01f;
            }


            int firstEffectIndex = animationSlide.IndexOfFirstEffect(shape);

            // Move the animations to just before the index of the first effect.
            if (effectDisappear != null)
            {
                effectDisappear.MoveTo(firstEffectIndex);
            }

            if (effectResize != null)
            {
                effectResize.MoveTo(firstEffectIndex);
            }

            if (effectMotion != null)
            {
                effectMotion.MoveTo(firstEffectIndex);
            }
        }
Exemplo n.º 2
0
        private Effect InsertAnimationAtIndex(Shape shape, int index, MsoAnimEffect animationEffect,
                                              MsoAnimTriggerType triggerType)
        {
            var    animationSequence = _slide.TimeLine.MainSequence;
            Effect effect            = animationSequence.AddEffect(shape, animationEffect, MsoAnimateByLevel.msoAnimateLevelNone,
                                                                   triggerType);

            effect.MoveTo(index);
            return(effect);
        }
 private Effect InsertAnimationAtIndex(Shape shape, int index, MsoAnimEffect animationEffect,
     MsoAnimTriggerType triggerType)
 {
     var animationSequence = _slide.TimeLine.MainSequence;
     Effect effect = animationSequence.AddEffect(shape, animationEffect, MsoAnimateByLevel.msoAnimateLevelNone,
         triggerType);
     effect.MoveTo(index);
     return effect;
 }
Exemplo n.º 4
0
 public EffectTransition(MsoAnimTriggerType slideTransition, float transitionTime)
 {
     this.slideTransition = slideTransition;
     this.transitionTime = transitionTime;
 }
Exemplo n.º 5
0
 public Effect AddTriggerEffect(Shape pShape, MsoAnimEffect effectId, MsoAnimTriggerType trigger, Shape pTriggerShape, string bookmark = "", MsoAnimateByLevel Level = MsoAnimateByLevel.msoAnimateLevelNone)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 6
0
 public Effect AddEffect(Shape Shape, MsoAnimEffect effectId, MsoAnimateByLevel Level = MsoAnimateByLevel.msoAnimateLevelNone, MsoAnimTriggerType trigger = MsoAnimTriggerType.msoAnimTriggerOnPageClick, int Index = -1)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 7
0
 public EffectTransition(MsoAnimTriggerType slideTransition, float transitionTime)
 {
     this.slideTransition = slideTransition;
     this.transitionTime  = transitionTime;
 }
Exemplo n.º 8
0
 public Effect AddTriggerEffect(Shape pShape, MsoAnimEffect effectId, MsoAnimTriggerType trigger, Shape pTriggerShape, string bookmark = "", MsoAnimateByLevel Level = MsoAnimateByLevel.msoAnimateLevelNone)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 9
0
 public Effect AddEffect(Shape Shape, MsoAnimEffect effectId, MsoAnimateByLevel Level = MsoAnimateByLevel.msoAnimateLevelNone, MsoAnimTriggerType trigger = MsoAnimTriggerType.msoAnimTriggerOnPageClick, int Index = -1)
 {
     throw new NotImplementedException();
 }