HowTo: Чертить линию со стрелкой?

У меня есть следующий код, который чертит линию с (очень) маленькой стрелкой...

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

Я хочу привлечь крупную стрелку (круг, квадрат, треугольник и т.д....), сохраняя ту же ширину строки.

Действительно ли это возможно?

10
задан Mark Lakata 20 November 2014 в 07:57
поделиться

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.

14
ответ дан 3 December 2019 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: