Aquí hay una función para dibujar una flecha con su cabeza en un punto p. Usted establecería esto en el punto medio de su línea. dx y dy son la dirección de la línea, que está dada por (x1 - x0, y1 - y0). Esto dará una flecha que se escala a la longitud de la línea. Normalice esta dirección si desea que la flecha siempre tenga el mismo tamaño.
private static void DrawArrow(Graphics g, Pen pen, Point p, float dx, float dy)
{
const double cos = 0.866;
const double sin = 0.500;
PointF end1 = new PointF(
(float)(p.X + (dx * cos + dy * -sin)),
(float)(p.Y + (dx * sin + dy * cos)));
PointF end2 = new PointF(
(float)(p.X + (dx * cos + dy * sin)),
(float)(p.Y + (dx * -sin + dy * cos)));
g.DrawLine(pen, p, end1);
g.DrawLine(pen, p, end2);
}
¿Es esta una flecha que apunta en el medio de una línea? O viniendo de eso? ¿O una punta de flecha que corre a lo largo de la línea? –
uno que se ejecuta a lo largo de la línea. – nunos