コード例 #1
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            // generateLocations();
            // generateRelations();

            var pointRelationships = JsonSerializer.Deserialize <IReadOnlyList <PointRelationship> >(File.ReadAllText(pointRelationshipPath));
            var nodeConnector      = new NodeConnector();

            var sw = new Stopwatch();

            Console.WriteLine("connect start");
            sw.Start();
            var pointNodes = nodeConnector.Connect(pointRelationships);

            sw.Stop();
            Console.WriteLine($"connect stop: {sw.ElapsedMilliseconds}");

            var    distanceCalculator = new DistanceCalculator();
            string source             = "1520000";
            string target             = "2610012";

            Console.WriteLine("calculate start");
            sw.Reset();
            sw.Start();
            Console.WriteLine($"{source}~{target}: {distanceCalculator.CalculateDistance(pointNodes, source, target)}m");
            sw.Stop();
            Console.WriteLine($"calculate stop: {sw.ElapsedMilliseconds}");
        }
コード例 #2
0
ファイル: Graph.Events.cs プロジェクト: wwwK/FlowGraph
        /// <summary>
        /// Handle mouse up
        /// </summary>
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);
            if (e.Button == MouseButtons.Left && EditMode != EGraphEditMode.SelectingBox)
            {
                IElement clickedElement = FindElementAt(m_transformed_location, true);
                if (clickedElement != null)
                {
                    System.Diagnostics.Debug.Print(clickedElement.ToString());
                    clickedElement.As <IMouseUpHandler>()?.OnMouseUp(e);
                    if (clickedElement is Node node)
                    {
                        if (node.Owner is NodeGroup group)
                        {
                            if (!group.Bounds.FullyContains(node.Bounds))
                            {
                                group.RemoveNode(node);
                            }
                        }
                    }
                    else if (clickedElement is NodeConnector)
                    {
                        NodeConnector from = SelectedElement as NodeConnector;
                        if (from != null)
                        {
                            NodeConnector to = (NodeConnector)clickedElement;
                            from.Connect(to);
                            to.Connect(from);
                        }
                    }
                    else if (FindElementAt <NodeGroup>(m_transformed_location, true) is NodeGroup group)
                    {
                        foreach (IElement element in Selection)
                        {
                            if (element is Node elementNode)
                            {
                                if (group.Bounds.FullyContains(elementNode.Bounds))
                                {
                                    group.AddNode(elementNode);
                                }
                            }
                        }
                    }
                    else
                    {
                        Selection.UnselectAll();
                    }
                }
                else
                {
                    Selection.UnselectAll();
                }
            }

            m_dragElement = false;
            SetEditMode(EGraphEditMode.Idle);
        }