如何用箭头画线?

问题描述 投票:0回答:2

我有以下代码,用(非常)小的箭头绘制一条线...

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Pen p = new Pen(Color.Black);
    p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;

    e.Graphics.DrawLine(p, 10, 10, 100, 100);
    p.Dispose();
}

我想画一个箭头(圆形,正方形,三角形等...),保持相同的线宽.

可能吗?

c# .net winforms gdi+
2个回答
17
投票

你想用一个

CustomLineCap
和一个
GraphicsPath
。这是一个例子:

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);
}

您想用一条从上到下并从 (0, 0) 开始的线“设计”您的帽子以获得正确的坐标。

编辑:我只是想提一下,您也可以使用

AdjustableArrowCap
绘制特定大小的箭头并填充它,但是因为您提到了对其他形状的要求,所以我使用了 CustomLineCap。


1
投票

正如TheCloudlessSky所说,

AdjustableArrowCap
可以用来画箭头

public static void DrawLine(Graphics g, Point from, Point to)
{
    var pen = new Pen(Color.Black, 1);

    pen.CustomEndCap = new AdjustableArrowCap(5, 5);

    g.DrawLine(pen, from, to);
}
© www.soinside.com 2019 - 2024. All rights reserved.