You'd want to use a CustomLineCap
with a GraphicsPath
. Here's an example:
using(Pen p = new Pen(Color.Black))
using(GraphicsPath capPath = new GraphicsPath())
{
// A triangle
capPath.AddLine(-20, 0, 20, 0);
capPath.AddLine(-20, 0, 0, 20);
capPath.AddLine(0, 20, 20, 0);
p.CustomEndCap = new System.Drawing.Drawing2D.CustomLineCap(null, capPath);
e.Graphics.DrawLine(p, 0, 50, 100, 50);
}
You want to "design" your cap with a line going top-to-bottom and from (0, 0) to get the correct coordinates.
EDIT: I just wanted to mention that you can also use AdjustableArrowCap
to draw an arrow of a specific size and fill it but because you mentioned the requirement for other shapes, I've used a CustomLineCap.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…