private static List<PowerPointSlide> AddMultiSlideZoomToArea(PowerPointSlide currentSlide, List<PowerPoint.Shape> shapesToZoom) { var addedSlides = new List<PowerPointSlide>(); int shapeCount = 1; PowerPointSlide lastMagnifiedSlide = null; PowerPointMagnifyingSlide magnifyingSlide = null; PowerPointMagnifiedSlide magnifiedSlide = null; PowerPointMagnifiedPanSlide magnifiedPanSlide = null; PowerPointDeMagnifyingSlide deMagnifyingSlide = null; foreach (PowerPoint.Shape selectedShape in shapesToZoom) { magnifyingSlide = (PowerPointMagnifyingSlide)currentSlide.CreateZoomMagnifyingSlide(); magnifyingSlide.AddZoomToAreaAnimation(selectedShape); magnifiedSlide = (PowerPointMagnifiedSlide)magnifyingSlide.CreateZoomMagnifiedSlide(); magnifiedSlide.AddZoomToAreaAnimation(selectedShape); addedSlides.Add(magnifiedSlide); if (shapeCount != 1) { magnifiedPanSlide = (PowerPointMagnifiedPanSlide)lastMagnifiedSlide.CreateZoomPanSlide(); magnifiedPanSlide.AddZoomToAreaAnimation(lastMagnifiedSlide, magnifiedSlide); addedSlides.Add(magnifiedPanSlide); } if (shapeCount == shapesToZoom.Count) { deMagnifyingSlide = (PowerPointDeMagnifyingSlide)magnifyingSlide.CreateZoomDeMagnifyingSlide(); deMagnifyingSlide.MoveTo(magnifyingSlide.Index + 2); deMagnifyingSlide.AddZoomToAreaAnimation(selectedShape); addedSlides.Add(deMagnifyingSlide); } selectedShape.Delete(); if (shapeCount != 1) { magnifyingSlide.Delete(); magnifiedSlide.MoveTo(magnifiedPanSlide.Index); if (deMagnifyingSlide != null) deMagnifyingSlide.MoveTo(magnifiedSlide.Index); lastMagnifiedSlide = magnifiedSlide; } else { addedSlides.Add(magnifyingSlide); lastMagnifiedSlide = magnifiedSlide; } shapeCount++; } Graphics.SortByIndex(addedSlides); return addedSlides; }