コード例 #1
0
        /// <summary>
        /// Generates nodes and edges endlessly for demonstration.
        /// </summary>
        public void StartGeneration()
        {
            lock (_nodeLock) {
                Color colour = Color.FromArgb(120, Color.White);

                // Add basis nodes.
                for (int i = 0; i < 100; i++)
                {
                    Add(new Node(PseudoRandom.UInt64().ToString(), colour));
                }

                // Connect some basis nodes.
                for (int i = 0; i < 80; i++)
                {
                    Node a, b;
                    do
                    {
                        a = _nodes[PseudoRandom.Int32(_nodes.Count - 1)];
                        b = _nodes[PseudoRandom.Int32(_nodes.Count - 1)];
                    } while (a == b || a.IsConnectedTo(b));
                    Connect(a, b);
                }

                // Add group nodes.
                for (int i = 0; i < 200; i++)
                {
                    Node node = new Node(PseudoRandom.UInt64().ToString(), colour);
                    Connect(node, _nodes[PseudoRandom.Int32(10)]);
                    Add(node);
                }

                // Add outlier nodes.
                for (int i = 0; i < 200; i++)
                {
                    Node node = new Node(PseudoRandom.UInt64().ToString(), colour);
                    Connect(node, _nodes[PseudoRandom.Int32(_nodes.Count - 1)]);
                    Add(node);
                }

                // Connect more nodes.
                for (int i = 0; i < 50; i++)
                {
                    Node a, b;
                    do
                    {
                        a = _nodes[PseudoRandom.Int32(_nodes.Count - 1)];
                        b = _nodes[PseudoRandom.Int32(_nodes.Count - 1)];
                    } while (a == b || a.IsConnectedTo(b));
                    Connect(a, b);
                }
            }
        }