有没有人有在给定直线中间画箭头的算法。我搜索过谷歌,但没有找到任何好的实现。
我真的不介意这门语言,但是如果是Java的话那就太好了,因为它是我用来做这件事的语言。
提前谢谢。

最佳答案

这里有一个函数来画一个箭头,它的头在一个点p。你可以把它设置为你的线的中点。dx和dy是线方向,由(x1-x0,y1-y0)给出。这将给出一个按线长度缩放的箭头。如果希望箭头始终大小相同,请规范化此方向。

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

关于algorithm - 在线绘制箭头算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3010803/

10-12 07:29