/// <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); } }
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; }
public EffectTransition(MsoAnimTriggerType slideTransition, float transitionTime) { this.slideTransition = slideTransition; this.transitionTime = transitionTime; }
public Effect AddTriggerEffect(Shape pShape, MsoAnimEffect effectId, MsoAnimTriggerType trigger, Shape pTriggerShape, string bookmark = "", MsoAnimateByLevel Level = MsoAnimateByLevel.msoAnimateLevelNone) { throw new NotImplementedException(); }
public Effect AddEffect(Shape Shape, MsoAnimEffect effectId, MsoAnimateByLevel Level = MsoAnimateByLevel.msoAnimateLevelNone, MsoAnimTriggerType trigger = MsoAnimTriggerType.msoAnimTriggerOnPageClick, int Index = -1) { throw new NotImplementedException(); }