예제 #1
0
        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;
            }
        }
예제 #2
0
        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;
            }
        }