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()); }
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))); }
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)); }