public static Shape GetShaper(TopicShape shape, int round) { switch (shape) { case TopicShape.Ellipse: return(new EllipseShape()); case TopicShape.BaseLine: return(new BaseLineShape()); case TopicShape.None: return(new NoneShape()); case TopicShape.Rectangle: default: if (round > 0) { return(new RoundRectangleShape(round)); } else { return(new RectangleShape()); } } }
Point[] GetPointsForRoot(TopicShape shapeFrom, TopicShape shapeTo, Rectangle rectFrom, Rectangle rectTo, Vector4 vector, Vector4 vectorTo) { var fcp = PaintHelper.CenterPoint(rectFrom); int bezierTurn; Point[] pts = new Point[4]; switch (vector) { case Vector4.Left: bezierTurn = Math.Min(MaxBezierTurn, Math.Abs(rectTo.Right - rectFrom.Left)); pts[3] = new Point(rectTo.Right, rectTo.Y + rectTo.Height / 2); pts[2] = new Point(rectTo.Right + bezierTurn, pts[3].Y); break; case Vector4.Right: bezierTurn = Math.Min(MaxBezierTurn, Math.Abs(rectTo.Left - rectFrom.Right)); pts[3] = new Point(rectTo.X, rectTo.Y + rectTo.Height / 2); pts[2] = new Point(rectTo.X - bezierTurn, pts[3].Y); break; case Vector4.Top: bezierTurn = Math.Min(MaxBezierTurn, Math.Abs(rectFrom.Top - rectTo.Bottom)); pts[3] = new Point(rectTo.X + rectTo.Width / 2, rectTo.Bottom); pts[2] = new Point(rectTo.X + rectTo.Width / 2, rectTo.Bottom + bezierTurn); break; case Vector4.Bottom: bezierTurn = Math.Min(MaxBezierTurn, Math.Abs(rectTo.Top - rectFrom.Bottom)); pts[3] = new Point(rectTo.X + rectTo.Width / 2, rectTo.Top); pts[2] = new Point(rectTo.X + rectTo.Width / 2, rectTo.Top - bezierTurn); break; } Point?startPoint; if (shapeFrom == TopicShape.Ellipse) { startPoint = PaintHelper.GetPointForPointIntersectEllipse(rectFrom, pts[3]); } else { startPoint = PaintHelper.GetPointForLineIntersectRectangle(rectFrom, pts[3]); } if (!startPoint.HasValue) { return(null); } pts[0] = startPoint.Value; pts[1] = startPoint.Value; return(pts); }
public void DrawLine(IGraphics graphics, IPen pen, TopicShape shapeFrom, TopicShape shapeTo, Rectangle rectFrom, Rectangle rectTo, Vector4 vectorFrom, Vector4 vectorTo, LineAnchor startAnchor, LineAnchor endAnchor) { Point[] pts = GetPoints(rectFrom, rectTo, vectorFrom, vectorTo); if (pts == null) { return; } graphics.DrawLine(pen, pts[0], pts[1], startAnchor, endAnchor); }
public static TopicShape GetTopicShape(string str, TopicShape defaultValue) { int i; if (!int.TryParse(str, out i)) { return(defaultValue); } try { return((TopicShape)i); } catch (System.Exception ex) { Helper.WriteLog(ex); return(defaultValue); } }
public void DrawLine(IGraphics graphics, IPen pen, TopicShape shapeFrom, TopicShape shapeTo, Rectangle rectFrom, Rectangle rectTo, Vector4 vectorFrom, Vector4 vectorTo, LineAnchor startAnchor, LineAnchor endAnchor) { Point[] pts; if (IsRoot) { pts = GetPointsForRoot(shapeFrom, shapeTo, rectFrom, rectTo, vectorFrom, vectorTo); } else { pts = GetPoints(rectFrom, rectTo, vectorFrom, vectorTo); } if (pts.IsNullOrEmpty()) { return; } graphics.DrawBezier(pen, pts[0], pts[1], pts[2], pts[3], startAnchor, endAnchor); }
public void DrawLine(IGraphics graphics, IPen pen, TopicShape shapeFrom, TopicShape shapeTo, Rectangle rectFrom, Rectangle rectTo, Vector4 vectorFrom, Vector4 vectorTo, LineAnchor startAnchor, LineAnchor endAnchor) { Point[] pts = GetPoints(rectFrom, rectTo, vectorFrom, vectorTo); if (pts == null) { return; } var path = graphics.GraphicsPath(); path.StartFigure(); path.AddBezier(pts[0], pts[1], pts[2], pts[3]); path.AddLine(pts[3], pts[4]); path.AddBezier(pts[4], pts[5], pts[6], pts[7]); path.CloseFigure(); graphics.FillPath(graphics.SolidBrush(pen.Color), path); }
internal static string _ConvertToString(TopicShape shape) { switch (shape) { case TopicShape.Default: return(Lang._("Default")); case TopicShape.BaseLine: return(Lang._("Base Line")); case TopicShape.Ellipse: return(Lang._("Ellipse")); case TopicShape.Rectangle: return(Lang._("Rectangle")); case TopicShape.None: return(Lang._("None")); default: return(shape.ToString()); } }