public static void addOverlay(Canvas canvas) { if (viewportLayer != null) { removeOverlay(); } viewportLayer = new Image(); lineLayer = new Image(); currentCanvas = canvas; UIElementCollection children = canvas.Children; canvas.Children.Add(viewportLayer); canvas.Children.Add(lineLayer); for (int i = 0; i < canvas.Children.Count - 2; i++) { System.Windows.UIElement element = children.ElementAt(0); canvas.Children.Remove(element); canvas.Children.Add(element); } updateOverlay(); addAnimation(); checkTimer = new DispatcherTimer(); checkTimer.Interval = TimeSpan.FromSeconds(0.2); checkTimer.Tick += delegate { checkChange(); }; checkTimer.Start(); }