Exemple #1
0
        public static void DrawCurve(this Graphics g, Pen pen, float p1X, float p1Y, float p2X, float p2Y, float p1cX,
                                     float p1cY, float p2cX, float p2cY, float arrowHeadWidth, float arrowHeadHeight, int nodesCount)
        {
            List <PointF> bezierLine =
                DrawingAlghoritms.GetBezierCurveNodes(p1X, p1Y, p2X, p2Y, p1cX, p1cY, p2cX, p2cY, nodesCount * 3 + 1);

            g.DrawBeziers(pen, bezierLine.ToArray());
        }
Exemple #2
0
        public static void FillRoundedRectangle(this Graphics g, Brush brush, float X, float Y, float width, float height, float xradius, float yradius,
                                                bool upperleft, bool upperright, bool lowerleft, bool lowerright)
        {
            RectangleF   rect    = new RectangleF(X, Y, width, height);
            GraphicsPath rounded = DrawingAlghoritms.RoundedRectangle(rect, xradius, yradius, upperleft, upperright,
                                                                      lowerright, lowerleft);

            g.FillPath(brush, rounded);
        }
        public bool Contains(PointF point, Edge edge)
        {
            if (edge.EdgeConfig.LinePoints.Count == 0)
            {
                return(false);
            }

            var path = new GraphicsPath();

            path.AddBeziers(DrawingAlghoritms.GetBezierCurveNodes(edge.EdgeConfig.Start, edge.EdgeConfig.CenterS, edge.EdgeConfig.CenterE, edge.EdgeConfig.End, 100 * 3 + 1).ToArray());
            Pen pen = edge.EdgeConfig.Selected ? edge.EdgeConfig.SelectedEdgePen : edge.EdgeConfig.EdgePen;

            return(path.IsOutlineVisible(point, new Pen(pen.Color, pen.Width + 15)));
        }
Exemple #4
0
        public static void DrawHalfArrow(this Graphics g, Pen pen, PointF p1, PointF temp, PointF p2)
        {
            double step = 0.01;
            Point  current, previous;

            for (double t = 0; t <= 1;)
            {
                previous = DrawingAlghoritms.GetPoint(t, p1, temp, p2);
                t       += step;
                current  = DrawingAlghoritms.GetPoint(t, p1, temp, p2);
                g.DrawLine(pen, current, previous);
                g.FillPolygon(new SolidBrush(pen.Color), new PointF[] { temp, current, previous });
            }
        }
        public void Draw(Graphics g, Edge edge)
        {
            Pen pen = edge.EdgeConfig.Selected || edge.EdgeConfig.Edit ? edge.EdgeConfig.SelectedEdgePen : edge.EdgeConfig.EdgePen;

            edge.EdgeConfig.LinePoints = edge.EdgeConfig.RefreshPoints(edge.NodeOne, edge.NodeTwo);

            List <PointF> bezierLine =
                DrawingAlghoritms.GetBezierCurveNodes(edge.EdgeConfig.Start, edge.EdgeConfig.CenterS, edge.EdgeConfig.CenterE, edge.EdgeConfig.End, 100 * 3 + 1);

            edge.EdgeConfig.HeadArrowStart = bezierLine[bezierLine.Count - 20];
            edge.EdgeConfig.TailArrowStart = bezierLine[20];

            //edge.EdgeConfig.CenterS = edge.EdgeConfig.LinePoints[1];
            //edge.EdgeConfig.CenterE = edge.EdgeConfig.LinePoints[2];

            edge.EdgeConfig.RefreshMarkers();

            g.DrawCurve(pen, edge.EdgeConfig.Start, edge.EdgeConfig.CenterS, edge.EdgeConfig.CenterE, edge.EdgeConfig.End, edge.EdgeConfig.ArrowSize.Width, edge.EdgeConfig.ArrowSize.Height, 100);
            g.DrawString(edge.ToString(), edge.EdgeConfig.Converter.ToScreenFont(edge.EdgeConfig.Font), new SolidBrush(edge.EdgeConfig.FontColor), (edge.EdgeConfig.CenterS.X + edge.EdgeConfig.CenterE.X) / 2, edge.EdgeConfig.Converter.YYtoJJ(edge.EdgeConfig.Y));
        }