HowTo: Draw a line with an arrow?

前端 未结 1 641
闹比i
闹比i 2020-12-10 04:50

I have the following code, that draws a line with a (very) small arrow...

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Pen p =         


        
相关标签:
1条回答
  • 2020-12-10 05:06

    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.

    0 讨论(0)
提交回复
热议问题