protected override void Shape_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed && sender is Path path && path.Data is EllipseGeometry ellipse && GraphicalModel is PolygonGraphicalModel model) { var point = e.GetPosition(OwnerChart.ViewPanel); var index = ControlShapes.IndexOf(path); var value = GraphicalPointConverter.ConvertBack(point, null, OwnerChart, null); if (value is Point p) { model.Points[index] = p; Drawing(); } ellipse.Center = point; e.Handled = true; } }
protected override void Shape_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed && sender is Path path && path.Data is EllipseGeometry ellipse && GraphicalModel is QuadrilateralGraphicalModel model) { var point = e.GetPosition(OwnerChart.ViewPanel); var index = ControlShapes.IndexOf(path); var value = GraphicalPointConverter.ConvertBack(point, null, OwnerChart, null); if (value is Point p) { model.Points[index] = p; switch (index) { case 0: model.Points[1] = new Point(model.Points[1].X, p.Y); model.Points[3] = new Point(p.X, model.Points[3].Y); break; case 1: model.Points[0] = new Point(model.Points[0].X, p.Y); model.Points[2] = new Point(p.X, model.Points[2].Y); break; case 2: model.Points[1] = new Point(p.X, model.Points[1].Y); model.Points[3] = new Point(model.Points[3].X, p.Y); break; case 3: model.Points[0] = new Point(p.X, model.Points[0].Y); model.Points[2] = new Point(model.Points[2].X, p.Y); break; default: break; } Drawing(); } ellipse.Center = point; e.Handled = true; } }