protected virtual void RenderArrows(IRenderContext context, Graphics graphics, IEdge edge, GeneralPath edgePath, IArrow sourceArrow, IArrow targetArrow) { if (targetArrow != Arrows.None && targetArrow != null) { Tangent?targetArrowAnchor = GetTargetArrowAnchor(edgePath, targetArrow); if (targetArrowAnchor != null) { var anchorPoint = targetArrowAnchor.Value.Point; var arrowDirection = targetArrowAnchor.Value.Vector; IVisualCreator visualCreator = targetArrow.GetVisualCreator(edge, false, anchorPoint, arrowDirection); visualCreator.CreateVisual(context).Paint(context, graphics); } } if (sourceArrow != Arrows.None && sourceArrow != null) { Tangent?sourceArrowAnchor = GetSourceArrowAnchor(edgePath, sourceArrow); if (sourceArrowAnchor != null) { var anchorPoint = sourceArrowAnchor.Value.Point; var arrowDirection = sourceArrowAnchor.Value.Vector; var visualCreator = sourceArrow.GetVisualCreator(edge, true, anchorPoint, arrowDirection); visualCreator.CreateVisual(context).Paint(context, graphics); } } }