且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

HTML Canvas - 绘制曲线箭头

更新时间:2023-11-09 21:15:16

由于您使用的是二次曲线,因此您知道两个点组成一条指向箭头方向"的直线:

Since you're using a quadratic curve, you know two points that make a line that points in the "direction" of your arrow head:

所以扔掉一点三角,你自己就有了解决方案.这是一个通用的函数,可以为你做这件事:

So throw down a smidge of trig and you have yourself a solution. Here's a generalized function that will do it for you:

http://jsfiddle.net/SguzM/

function drawArrowhead(locx, locy, angle, sizex, sizey) {
    var hx = sizex / 2;
    var hy = sizey / 2;

    ctx.translate((locx ), (locy));
    ctx.rotate(angle);
    ctx.translate(-hx,-hy);

    ctx.beginPath();
    ctx.moveTo(0,0);
    ctx.lineTo(0,1*sizey);    
    ctx.lineTo(1*sizex,1*hy);
    ctx.closePath();
    ctx.fill();

    ctx.translate(hx,hy);
    ctx.rotate(-angle);
    ctx.translate(-locx,-locy);
}        

// returns radians
function findAngle(sx, sy, ex, ey) {
    // make sx and sy at the zero point
    return Math.atan2((ey - sy), (ex - sx));
}