.net 如何:用箭头画一条线?

j5fpnvbx  于 2022-11-19  发布在  .NET
关注(0)|答案(2)|浏览(182)

我有下面的代码,它画了一条线,上面有一个(非常)小的箭头...

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

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

ivqmmu1c

ivqmmu1c1#

您可能希望将CustomLineCapGraphicsPath一起使用。下面是一个示例:

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)开始从上到下的直线,以获得正确的坐标。

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

0g0grzrc

0g0grzrc2#

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

相关问题