/// <summary> /// Merges multiple animated slides into a single slide. /// TODO: Test this method more thoroughly, in places other than autozoom. /// </summary> public static void SquashSlides(IEnumerable <PowerPointSlide> slides) { PowerPointSlide firstSlide = null; ShapeRange previousShapes = null; EffectTransition slideTransition = new EffectTransition(); foreach (PowerPointSlide slide in slides) { if (firstSlide == null) { firstSlide = slide; slideTransition = GetTransitionFromSlide(slide); firstSlide.Transition.AdvanceOnClick = MsoTriState.msoTrue; firstSlide.Transition.AdvanceOnTime = MsoTriState.msoFalse; previousShapes = ShapeUtil.GetShapesWhenTypeNotMatches(firstSlide, firstSlide.Shapes.Range(), MsoShapeType.msoPlaceholder); continue; } Sequence effectSequence = firstSlide.GetNativeSlide().TimeLine.MainSequence; int effectStartIndex = effectSequence.Count + 1; slide.DeleteIndicator(); ShapeRange newShapeRange = firstSlide.CopyShapesToSlide(slide.Shapes.Range()); newShapeRange.ZOrder(MsoZOrderCmd.msoSendToBack); foreach (Shape shape in newShapeRange) { AddAppearAnimation(shape, firstSlide, effectStartIndex); } foreach (Shape shape in previousShapes) { AddDisappearAnimation(shape, firstSlide, effectStartIndex); } slideTransition.ApplyTransition(effectSequence[effectStartIndex]); previousShapes = newShapeRange; slideTransition = GetTransitionFromSlide(slide); slide.Delete(); } }
private void ShowHide(Control componente) { EffectTransition.Animate(componente, EffectTransition.Effect.Slide, 150, 180); }
/// <summary> /// Merges multiple animated slides into a single slide. /// TODO: Test this method more thoroughly, in places other than autozoom. /// </summary> public static void SquashSlides(IEnumerable<PowerPointSlide> slides) { PowerPointSlide firstSlide = null; List<Shape> previousShapes = null; EffectTransition slideTransition = new EffectTransition(); foreach (var slide in slides) { if (firstSlide == null) { firstSlide = slide; slideTransition = GetTransitionFromSlide(slide); firstSlide.Transition.AdvanceOnClick = MsoTriState.msoTrue; firstSlide.Transition.AdvanceOnTime = MsoTriState.msoFalse; //TODO: Check if there will be an exception when there are empty placeholder shapes in firstSlide. previousShapes = firstSlide.Shapes.Cast<Shape>().ToList(); continue; } var effectSequence = firstSlide.GetNativeSlide().TimeLine.MainSequence; int effectStartIndex = effectSequence.Count + 1; slide.DeleteIndicator(); var newShapeRange = firstSlide.CopyShapesToSlide(slide.Shapes.Range()); newShapeRange.ZOrder(MsoZOrderCmd.msoSendToBack); var newShapes = newShapeRange.Cast<Shape>().ToList(); newShapes.ForEach(shape => AddAppearAnimation(shape, firstSlide, effectStartIndex)); previousShapes.ForEach(shape => AddDisappearAnimation(shape, firstSlide, effectStartIndex)); slideTransition.ApplyTransition(effectSequence[effectStartIndex]); previousShapes = newShapes; slideTransition = GetTransitionFromSlide(slide); slide.Delete(); } }