【问题标题】:HowTo: Draw a line with an arrow?如何:用箭头画一条线?
【发布时间】:2015-09-28 02:23:36
【问题描述】:

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

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

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

有可能吗?

【问题讨论】:

    标签: .net gdi+


    【解决方案1】:

    您希望将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。

    【讨论】:

    • 是的..我知道customcap...不方便的是它不会随着线宽而改变...如果上限是“CapScale”或“CapSize”之类的属性,对我来说非常理想...但它不存在... 也很遗憾不存在AdjustableCircleCap或AdjustableSquareCap...
    • @serhio - 你是什么意思它不会随线宽改变?如果你改变笔的宽度,它会画一条更粗的线。你能解释一下你的意思吗?您也可以滚动您的自己的 AdjustableCircleCap,当您知道如何正确使用GraphicsPath 时并不难。如果你不确定,我可以为你写一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 2023-03-25
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多