一个绘制虚线的算法。很不错!来自《html5 canvas核心技术》一书。 var canvas = document.getElementByIdx_x_x_x("canvas"), ctx = canvas.getContext("2d"); function drawDashLine(ctx, x1, y1, x2, y2, dashLength){ var dashLen = dashLength === undefined ? 5 : dashLength, xpos = x2 - x1, //得到横向的宽度; ypos = y2 - y1, //得到纵向的高度; numDashes = Math.floor(Math.sqrt(xpos * xpos + ypos * ypos) / dashLen); //利用正切获取斜边的长度除以虚线长度,得到要分为多少段; for(var i=0; i小于numDashes; i++){ if(i % 2 === 0){ ctx.moveTo(x1 + (xpos/numDashes) * i, y1 + (ypos/numDashes) * i); //有了横向宽度和多少段,得出每一段是多长,起点 + 每段长度 * i = 要绘制的起点; }else{ ctx.lineTo(x1 + (xpos/numDashes) * i, y1 + (ypos/numDashes) * i); } } ctx.stroke(); } ctx.lineWidth = 2; ctx.strokeStyle = "#0000ff"; drawDashLine(ctx, 0, 0, 400, 400, 8) --------------------------------------------------- 上面是自己实现的一个简单的绘制虚线,实际上html5已经将绘制虚线纳入规范,但不是所有浏览器都已经支持好了。
|