Sometimes we get queries about how to get certain arrowhead shapes. For example, the following link:
was defined by:
[Serializable]
public class Relationship : GoLink {
public Relationship() {
this.FromArrow = true;
this.FromArrowFilled = false;
this.FromArrowLength = 12;
this.FromArrowShaftLength = 0;
this.FromArrowStyle = GoStrokeArrowheadStyle.Cross;
this.FromArrowWidth = 16;
this.ToArrow = true;
this.ToArrowFilled = false;
this.ToArrowLength = 0;
this.ToArrowShaftLength = 16;
this.ToArrowWidth = 16;
}
protected override void DrawArrowhead(Graphics g, GoView view, Pen pen, Brush brush,
bool atEnd, float offsetw, float offseth, PointF[] poly) {
if (atEnd) {
GoShape.DrawLine(g, view, pen, poly[0].X, poly[0].Y, poly[1].X, poly[1].Y);
GoShape.DrawLine(g, view, pen, poly[0].X, poly[0].Y, poly[2].X, poly[2].Y);
GoShape.DrawLine(g, view, pen, poly[0].X, poly[0].Y, poly[3].X, poly[3].Y);
GoShape.DrawEllipse(g, view, pen, Brushes.White, poly[0].X-10, poly[0].Y-5, 10, 10);
} else {
base.DrawArrowhead(g, view, pen, brush, atEnd, offsetw, offseth, poly);
}
}
}
The left side ("From" end) arrowhead is just a matter of setting the various "From..." properties.
The right side ("To" end) arrowhead requires overriding DrawArrowhead.