Как провести линию стрелкой?
У меня есть следующий код, который рисует линию с (очень) маленькую стрелку...
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();
}
Я хочу нарисовать большой стрелка (круг, квадрат, треугольник etc...), сохраняя ту же ширину линии.
это возможно?
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.