コード例 #1
0
        //private readonly Action _graphicObjectSelected;
        //private readonly Action _verticleSelected;
        //private readonly Func<int, bool> _lineSelected;
        //private readonly Action _nullSelected;
        //private readonly Action _circleSelected;


        private void DrawCircle()
        {
            var circle = new Circle(Clicks.Last(), Radius, Drawing, GuidMapLogic, Width);

            GraphicObjects.Add(circle.Guid, circle);
            circle.DrawItself();
            circle.DrawOnGuidMap();
            //GuidMapLogic.SetOnMap(circle);
            Clicks.Clear();
        }
コード例 #2
0
        private void AddVerticle()
        {
            var   line             = (SelectedObject as Line);
            Point newVerticlePoint = Clicks.Last();
            var   newLine          = (line.ParentGraphicObject as Poligon).InsertLine(line, newVerticlePoint);

            GraphicObjects.Add(newLine.Guid, newLine);
            GraphicObjects.Add(newLine.StartVerticle.Guid, newLine.StartVerticle);
            Redraw();
        }
コード例 #3
0
        private void MoveObject()
        {
            var line = (SelectedObject as Line);

            var pointOnLine = Clicks[Clicks.Count - 2];
            int diffOnX     = Clicks.Last().X - pointOnLine.X;
            int diffOnY     = Clicks.Last().Y - pointOnLine.Y;

            SelectedObject.Move(diffOnX, diffOnY);
            Redraw();
        }
コード例 #4
0
        private void MoveVerticle()
        {
            if (SelectedObject?.GraphicObjectType != GraphicObjectType.Verticle)
            {
                return;
            }

            Verticle verticle = (SelectedObject as Verticle);

            verticle.Point = Clicks.Last();
            SelectedObject = null;

            Redraw();
        }
コード例 #5
0
        private void StartDrawingPolygon()
        {
            if (Clicks.Count == 1)
            {
                Poligon poligon = new Poligon(Drawing, GuidMapLogic);
                CurrentPolygon = poligon;
                GraphicObjects.Add(poligon.Guid, poligon);
                return;
            }
            var line = new Line(Clicks[Clicks.Count - 2], Clicks.Last(), Width, Drawing, GuidMapLogic, CurrentPolygon);

            CurrentPolygon.AddLine(line);
            line.DrawItself();
        }
コード例 #6
0
        private void SetConcrentic()
        {
            Guid          mapGuid       = GuidMapLogic.GuidMap[Clicks.Last().X + Clicks.Last().Y *Drawing.Width];
            GraphicObject graphicObject = null;

            //Guid mapGuiFirstCircle = GuidMapLogic.GuidMap[Clicks.First().X + Clicks.First().Y * Drawing.Width];

            if (mapGuid != Guid.Empty)
            {
                ConnectedCircle connectedCircle;
                graphicObject = GraphicObjects[mapGuid];

                if (GraphicObjects[mapGuid].GraphicObjectType == GraphicObjectType.Circle)
                {
                    ConnectedCircles.Add(GraphicObjects[mapGuid] as Circle);
                }


                if (graphicObject.GraphicObjectType == GraphicObjectType.Circle)
                {
                    var firstCircle = ConnectedCircles.FirstOrDefault();
                    var circle      = ConnectedCircles.LastOrDefault();
                    if (ConnectedCircles.Count > 1)
                    {
                        if (firstCircle.ParentGraphicObject == null)
                        {
                            connectedCircle = new ConnectedCircle(firstCircle, circle, Drawing, GuidMapLogic);
                            firstCircle.ParentGraphicObject = connectedCircle;
                            circle.ParentGraphicObject      = connectedCircle;
                            circle.Center = firstCircle.Center;
                            GraphicObjects.Add(connectedCircle.Guid, connectedCircle);
                        }
                        else
                        {
                            circle.Center = firstCircle.Center;
                            (firstCircle.ParentGraphicObject as ConnectedCircle).AddCircle(circle);
                        }
                    }
                }
            }

            Redraw();
        }
コード例 #7
0
        private void StopDrawPolygon()
        {
            if (Clicks.Count > 2)
            {
                var line = new Line(Clicks.Last(), Clicks.First(), Width, Drawing, GuidMapLogic, CurrentPolygon);
                CurrentPolygon.AddLastLine(line);
                line.DrawItself();

                CurrentPolygon
                .Lines.ForEach(poligonLine => GraphicObjects.Add(poligonLine.Guid, poligonLine));

                CurrentPolygon
                .Verticies.ForEach(poligonVerticle => GraphicObjects.Add(poligonVerticle.Guid, poligonVerticle));

                CurrentPolygon.DrawOnGuidMap();
                //GuidMapLogic.SetOnMap(CurrentPolygon);
            }
            _buttonControl.StopDrawingPoligon();
            Clicks.Clear();
        }
コード例 #8
0
        private void SelectObject()
        {
            GraphicObject graphicObject = null;
            Guid          mapGuid       = GuidMapLogic.GuidMap[Clicks.Last().X + Clicks.Last().Y *Drawing.Width];

            if (mapGuid == Guid.Empty)
            {
                //Clicks.Clear();
                return;
            }
            if (mapGuid != Guid.Empty)
            {
                graphicObject  = GraphicObjects[mapGuid];
                SelectedObject = graphicObject;
                Redraw();
                HighlightObject();
            }
            //Clicks.Clear();


            //return graphicObject;
        }
コード例 #9
0
 private void CreatePoint()
 {
     Drawing.SetPixel(Clicks.Last(), Width);
     Clicks.Clear();
 }