<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#oCanv{background:lavenderblush; }
</style>
</head>
<body>
<canvas id="oCanv" width="200" height="200"></canvas>
function dashTo(obj,x1,y1,x2,y2,lineLengh){
var odash=document.getElementById(obj);
var cxt=odash.getContext('2d');
var c=Math.sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)) ;
var len=Math.floor(c/(2*lineLengh));
var disX=(x2-x1)/c*lineLengh;
var disY=(y2-y1)/c*lineLengh;
for(var i=0;i<len;i++){
cxt.save();
cxt.beginPath();
cxt.strokeStyle="#0000FF";
cxt.lineWidth=3;
var x3=x1+2*i*disX;
var y3=y1+2*i*disY;
cxt.moveTo(x3,y3);
var x4=x3+disX;
var y4=y3+disY;
cxt.lineTo(x4,y4);
cxt.stroke();
cxt.closePath();
cxt.restore();
};
var x5=x4+disX;
var y5=y4+disY;
if(Math.abs(x5-x2)<disX){
cxt.beginPath();
cxt.strokeStyle="#09F250";
cxt.lineWidth=3;
cxt.moveTo(x5,y5);
cxt.lineTo(x2,y2);
cxt.stroke();
cxt.closePath();
}else if(Math.abs(x5-x2)>disX){
cxt.beginPath();
cxt.strokeStyle="#09F250";
cxt.lineWidth=3;
cxt.moveTo(x5,y5);
cxt.lineTo(x5+disX,y5+disY);
cxt.stroke();
cxt.closePath();
}
};
</script>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#oCanv{background:lavenderblush; }
</style>
</head>
<body>
<canvas id="oCanv" width="200" height="200"></canvas>
<script>
//采用canvas制作dashTo的封装函数,dashTo(obj,x1,y1,x2,y2)参数分别对应,obj:canvas的id;初始坐标:x1y1;终点坐标:x2y2;lineLength:实线的长度等于间隔的空隙长度,为了达到lineTo一样的效果只是实现虚线。
function dashTo(obj,x1,y1,x2,y2,lineLengh){
var odash=document.getElementById(obj);
var cxt=odash.getContext('2d');
var c=Math.sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)) ;
var len=Math.floor(c/(2*lineLengh));
var disX=(x2-x1)/c*lineLengh;
var disY=(y2-y1)/c*lineLengh;
for(var i=0;i<len;i++){
cxt.save();
cxt.beginPath();
cxt.strokeStyle="#0000FF";
cxt.lineWidth=3;
var x3=x1+2*i*disX;
var y3=y1+2*i*disY;
cxt.moveTo(x3,y3);
var x4=x3+disX;
var y4=y3+disY;
cxt.lineTo(x4,y4);
cxt.stroke();
cxt.closePath();
cxt.restore();
};
var x5=x4+disX;
var y5=y4+disY;
if(Math.abs(x5-x2)<disX){
cxt.beginPath();
cxt.strokeStyle="#09F250";
cxt.lineWidth=3;
cxt.moveTo(x5,y5);
cxt.lineTo(x2,y2);
cxt.stroke();
cxt.closePath();
}else if(Math.abs(x5-x2)>disX){
cxt.beginPath();
cxt.strokeStyle="#09F250";
cxt.lineWidth=3;
cxt.moveTo(x5,y5);
cxt.lineTo(x5+disX,y5+disY);
cxt.stroke();
cxt.closePath();
}
};
</script>
</body>
</html>