コード例 #1
0
        public void SplitEdge(Edge e)
        {
            foreach (var vertice in e.Endpoints)
            {
                vertice.DisconnectEdge(e);
            }

            var     middleOfEdge = PointUtilities.GetPointInTheMiddleOfSegment(e.Endpoints[0].Position, e.Endpoints[1].Position);
            Vertice v            = new Vertice
            {
                Position = middleOfEdge
            };

            CreateEdgeBetweenVertices(v, e.Endpoints[0]);
            CreateEdgeBetweenVertices(v, e.Endpoints[1]);

            List <Vertice> verticesList = Vertices.ToList();
            List <Edge>    edgesList    = Edges.ToList();

            verticesList.Add(v);
            edgesList.Remove(e);

            Vertices = verticesList;
            Edges    = edgesList;
        }
コード例 #2
0
        private void DrawIcon(Graphics graphics, Edge edge)
        {
            if (edge.Type == EdgeType.Normal)
            {
                return;
            }

            Point middle          = PointUtilities.GetPointInTheMiddleOfSegment(edge.Endpoints[0].Position, edge.Endpoints[1].Position);
            Point leftUpperCorner = new Point(middle.X - IconRadius, middle.Y - IconRadius);

            using (Pen pen = new Pen(IconColor, IconLineThickness))
            {
                Point leftUpper  = new Point((int)(middle.X - 0.5 * IconRadius), (int)(middle.Y - 0.5 * IconRadius));
                Point leftLower  = new Point(leftUpper.X, leftUpper.Y + IconRadius);
                Point rightUpper = new Point((int)(middle.X + 0.5 * IconRadius), leftUpper.Y);
                Point rightLower = new Point(rightUpper.X, leftLower.Y);

                if (edge.Type == EdgeType.Horizontal)
                {
                    graphics.DrawLine(pen, leftUpper, rightUpper);
                    graphics.DrawLine(pen, leftLower, rightLower);
                }
                else if (edge.Type == EdgeType.Vertical)
                {
                    graphics.DrawLine(pen, leftUpper, leftLower);
                    graphics.DrawLine(pen, rightUpper, rightLower);
                }
                else if (edge.Type == EdgeType.FixedLength)
                {
                    using (Brush b = new SolidBrush(IconColor))
                        using (Font f = new Font(IconFontName, IconFontSize))
                        {
                            graphics.DrawString("F", f, b, leftUpper);
                        }
                }
            }
        }