canvas画箭头封装,直接调用

H5新出新出的canvas可以说被好多公司使用,但是canvas没有一个合适的关于箭头的一个样式就很不好,下面封装了一个箭头的简单样式,可以直接拿到项目中使用:

复制代码
drawArrow(ctx,xA,yA,xB,yB,l=5,θ=30) {
        let L = 5;
        let a = Math.atan2((yB - yA), (xB - xA));
        let xC = xB - L * Math.cos(a + θ * Math.PI/180); // θ=30
        let yC = yB - L * Math.sin(a + θ * Math.PI/180);
        let xD = xB - L * Math.cos(a - θ * Math.PI/180);
        let yD = yB - L * Math.sin(a - θ * Math.PI/180);
        ctx.beginPath();
        ctx.moveTo(xA, yA);
        ctx.lineTo(xB, yB);
        ctx.moveTo(xC, yC);
        ctx.lineTo(xB, yB);
        ctx.lineTo(xD, yD);
        // ctx.lineWidth = 5;//箭头的粗细,可以根据需要自己选择
        ctx.strokeStyle = "#000000";
        ctx.stroke();
    },
复制代码

解释一下传参,第一个参数是你定义的getContext('2d')的名称,也是2d画图的对象,第二和第三个参数是你箭头的末端,第四和第五个参数是箭头的部分,第六个参数是箭头两边线段的长度,第七个参数是箭头的角度如图所示:

传递对应的参数就可以在页面画出对应的剪头了

posted @   黑白棋学弟  阅读(849)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示