private void openGLControlView_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { isMouseDown = false; switch (selectedFigure) { case Figures.Line: //containerFigures.addNewFigure( // Factory.Create( // "Line", // new Dictionary<string, object>() // { // { "Point1", last3Points[1] }, // { "Point2", last3Points[2] } // }) //); break; case Figures.Quadrangle: { IFigure figure = Factory.Create( "Rectangle", new Dictionary <string, object>() { { "DownLeft", new Interfaces.Point(last3Points[1].X, last3Points[2].Y) }, { "UpRight", new Interfaces.Point(last3Points[2].X, last3Points[1].Y) }, { "BorderColor", borderColor }, { "FillColor", fillColor } }); addCommand.Execute(figure); } break; case Figures.Circle: { Interfaces.Point centerPoint = new Interfaces.Point(last3Points[1].X, last3Points[1].Y); Interfaces.Point borderPoint = new Interfaces.Point(last3Points[2].X, last3Points[2].Y); double radius = GetDistance(centerPoint, borderPoint); double a = radius; double b = radius; Interfaces.Point begPoint = new Interfaces.Point(centerPoint.X + radius, centerPoint.Y); Interfaces.Point endPoint = new Interfaces.Point(centerPoint.X - radius, centerPoint.Y); List <List <Segment> > fragments = new List <List <Segment> >(); List <Segment> segments = new List <Segment>(); segments.Add(new EllipseArc(centerPoint, a, b, 0, Math.PI, begPoint, endPoint, 0)); segments.Add(new EllipseArc(centerPoint, a, b, 0, Math.PI, endPoint, begPoint, 0)); fragments.Add(segments); IFigure figure = new Mutant(fragments, borderColor, fillColor, 1); addCommand.Execute(figure); } break; case Figures.Ellipse: { Interfaces.Point centerPoint = new Interfaces.Point(last3Points[1].X + (last3Points[2].X - last3Points[1].X) / 2.0, last3Points[1].Y + (last3Points[2].Y - last3Points[1].Y) / 2.0); double radius = GetDistance(last3Points[1], last3Points[2]) / 2.0; double a = Math.Abs(centerPoint.X - last3Points[1].X); double b = Math.Abs(centerPoint.Y - last3Points[1].Y); Interfaces.Point begPoint = new Interfaces.Point(centerPoint.X + a, centerPoint.Y); Interfaces.Point endPoint = new Interfaces.Point(centerPoint.X - a, centerPoint.Y); List <List <Segment> > fragments = new List <List <Segment> >(); List <Segment> segments = new List <Segment>(); segments.Add(new EllipseArc(centerPoint, a, b, 0, Math.PI, begPoint, endPoint, 0)); segments.Add(new EllipseArc(centerPoint, a, b, 0, Math.PI, endPoint, begPoint, 0)); fragments.Add(segments); IFigure figure = new Mutant(fragments, borderColor, fillColor, 1); addCommand.Execute(figure); } break; } isStartDrag = false; } if (e.Button == MouseButtons.Middle) { isMiddleButton = false; } }
private void openGLControlView_MouseUp(object sender, MouseEventArgs e) { if (isModeSelectFigures) { return; } else if (e.Button == MouseButtons.Left) { isMouseDown = false; switch (selectedFigure) { case Figures.Line: //containerFigures.addNewFigure( // Factory.Create( // "Line", // new Dictionary<string, object>() // { // { "Point1", last3Points[1] }, // { "Point2", last3Points[2] } // }) //); break; case Figures.Quadrangle: { IFigure figure = Factory.Create( "Rectangle", new Dictionary <string, object>() { { "DownLeft", new Interfaces.Point(last3Points[1].X, last3Points[2].Y) }, { "UpRight", new Interfaces.Point(last3Points[2].X, last3Points[1].Y) }, { "BorderColor", borderColor }, { "FillColor", fillColor } }); listViewLayers.Items.Add("Rectangle " + countRectangles.ToString()); countRectangles++; // пока не дорисовали ещё точек - мы не будем отрисовывать // временную фигуру readyToDrawTempFigure = false; addCommand.Execute(figure); } break; case Figures.Circle: { Interfaces.Point centerPoint = new Interfaces.Point(last3Points[1].X, last3Points[1].Y); Interfaces.Point borderPoint = new Interfaces.Point(last3Points[2].X, last3Points[2].Y); double radius = GetDistance(centerPoint, borderPoint); double a = radius; double b = radius; Interfaces.Point begPoint = new Interfaces.Point(centerPoint.X + radius, centerPoint.Y); Interfaces.Point endPoint = new Interfaces.Point(centerPoint.X - radius, centerPoint.Y); List <List <Segment> > fragments = new List <List <Segment> >(); List <Segment> segments = new List <Segment>(); segments.Add(new EllipseArc(centerPoint, a, b, 0, Math.PI, begPoint, endPoint, 0)); segments.Add(new EllipseArc(centerPoint, a, b, 0, Math.PI, endPoint, begPoint, 0)); fragments.Add(segments); IFigure figure = new Mutant(fragments, borderColor, fillColor, 1); addCommand.Execute(figure); listViewLayers.Items.Add("Circle " + countCircles.ToString()); countCircles++; // пока не дорисовали ещё точек - мы не будем отрисовывать // временную фигуру readyToDrawTempFigure = false; } break; case Figures.Ellipse: { Interfaces.Point centerPoint = new Interfaces.Point(last3Points[1].X + (last3Points[2].X - last3Points[1].X) / 2.0, last3Points[1].Y + (last3Points[2].Y - last3Points[1].Y) / 2.0); double radius = GetDistance(last3Points[1], last3Points[2]) / 2.0; double a = Math.Abs(centerPoint.X - last3Points[1].X); double b = Math.Abs(centerPoint.Y - last3Points[1].Y); Interfaces.Point begPoint = new Interfaces.Point(centerPoint.X + a, centerPoint.Y); Interfaces.Point endPoint = new Interfaces.Point(centerPoint.X - a, centerPoint.Y); List <List <Segment> > fragments = new List <List <Segment> >(); List <Segment> segments = new List <Segment>(); segments.Add(new EllipseArc(centerPoint, a, b, 0, Math.PI, begPoint, endPoint, 0)); segments.Add(new EllipseArc(centerPoint, a, b, 0, Math.PI, endPoint, begPoint, 0)); fragments.Add(segments); IFigure figure = new Mutant(fragments, borderColor, fillColor, 1); addCommand.Execute(figure); listViewLayers.Items.Add("Elipse " + countElipses.ToString()); countElipses++; // пока не дорисовали ещё точек - мы не будем отрисовывать // временную фигуру readyToDrawTempFigure = false; } break; } isStartDrag = false; } if (e.Button == MouseButtons.Right) { isMiddleButton = false; } }