private void MergeFigures_Click(object sender, RoutedEventArgs e) { var morfs = canvas.Children.Cast <FrameworkElement>().Where(x => x.Name == "Polyline").ToArray(); if (morfs.Any()) { for (var i = 0; i < morfs.Length; ++i) { canvas.Children.Remove(morfs[i]); } } /*var figureA = shape.GetShapes().Select(x => x as Line).ToList(); * var figureB = canvas.Children.Cast<UIElement>() * .Where(x => x is Line).Select(x => x as Line) * .Where(x => x.Tag != null && x.Tag.ToString() != "Axis").Except(figureA).ToList();*/ Morffing morffing = new Morffing(); var numberPoints = int.Parse(MakePoints.Text); /*var A = int.Parse(ProportionA.Text); * var B = int.Parse(ProportionB.Text); * var linePoints = new List<Point[]>(); * var points = BreakLines(figureA, numberPoints).ToArray(); * linePoints.Add(points); * points = BreakLines(figureB, numberPoints).ToArray(); * linePoints.Add(points);*/ var figures = group.GetFigures().Select(x => x.Select(y => y as Line).ToList()).ToList(); var proportions = new double[stackpanelProportions.Children.Count]; var linePoints = new List <Point[]>(); foreach (var f in figures) { linePoints.Add(BreakLines(f, numberPoints).ToArray()); } for (var i = 0; i < proportions.Length; ++i) { proportions[i] = int.Parse((stackpanelProportions.Children[i] as TextBox).Text); } //var polyLine = morffing.MorffingShapes(linePoints, new double[] { A, B }, numberPoints); var polyLine = morffing.MorffingShapes(linePoints, proportions, numberPoints); canvas.Children.Add(polyLine); }
private void sliderMorffing_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e) { var morfs = canvas.Children.Cast <FrameworkElement>().Where(x => x.Name == "Morffing").ToArray(); if (morfs.Any()) { for (var i = 0; i < morfs.Length; ++i) { canvas.Children.Remove(morfs[i]); } } var start = shape.GetShapes().Select(x => x as Line).ToList(); var end = canvas.Children.Cast <UIElement>() .Where(x => x is Line).Select(x => x as Line) .Where(x => x.Tag != null && x.Tag.ToString() != "Axis").Except(start).ToList(); Morffing morffing = new Morffing(Math.Round(e.NewValue), start, end); var lines = morffing.MorffingLines(); foreach (var l in lines) { canvas.Children.Add(l); } }