最近因为项目上面的需求需要绘制一个超超级复杂的轨道图,我是这么认为的~ 哈哈! 因为整个公司所有开发里就只有我会canvas画图而这次画图只是重构,需求里有要求画箭头的环节。自己写呢是不可能的因为有百度,于是在网上搜了搜,然后整理了下面代码
<script>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var node_x = 100;
var node_y =100;
var preNode_x = 120;
var preNode_y =120;
var angle = Math.atan2(node_y - preNode_y, node_x - preNode_x);
arrow(ctx,preNode_x,node_y,"#f00",2,angle,10,0);
function arrow(ctx,x2,y2,color,lineWidth,angle,headlen,len){
ctx.save();
ctx.beginPath();
ctx.lineWidth =lineWidth;
ctx.strokeStyle =color;
ctx.lineTo(x2-headlen*Math.cos(angle+Math.PI/7), y2-headlen*Math.sin(angle+Math.PI/7));
ctx.lineTo(x2, y2+len);
ctx.lineTo(x2-headlen*Math.cos(angle-Math.PI/7), y2-headlen*Math.sin(angle-Math.PI/7));
ctx.stroke();
ctx.closePath();
}
</script>