canvas 绘制虚线
来源:互联网 发布:空间域名 编辑:程序博客网 时间:2024/05/16 09:36
一.分析
原理是:求出AB点之间的长度,再设置虚线的长度dashLength,把AB是我长度/虚线长度dashLength 就是虚线数量,根据虚线数量,长度就可以得到当第i个虚线的坐标位置,在使用context.moveTo()和context.lineTo()绘制
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>虚线</title></head><body><canvas id="canvas">您的浏览器不支持canvas</canvas><script type="text/javascript">//1.获取canvas的上下文, var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d"); canvas.width =800; canvas.height =800; context.beginPath(); context.lineWidth =3; context.strokeStyle ='blue'; drawDashedLine(context,0,0,canvas.width, canvas.height, 5); //绘制虚线函数 function drawDashedLine(context, x1, y1, x2, y2, dashLength) {//传入参数:上下文,起点,终点,虚线间隔 dashLength = dashLength === undefined ? 5 : dashLength;//运用三元表达式实现默认参数 var deltaX = x2 - x1;//水平长度 var deltaY = y2 - y1;//垂直长度 var numDashes = Math.floor( Math.sqrt(deltaX * deltaX + deltaY * deltaY) / dashLength);//虚线数量 for (var i=0; i < numDashes; ++i) { context[ i % 2 === 0 ? 'moveTo' : 'lineTo' ] (x1 + (deltaX / numDashes) * i, y1 + (deltaY / numDashes) * i);//(deltaX/numDashed)是指虚线的长度 } context.stroke(); };</script></body></html>
绘制虚线会了,接下来我们来绘制米字格
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>米字格</title></head><body><canvas id="canvas">您的浏览器不支持canvas</canvas><script type="text/javascript">//1.获取canvas的上下文,//2.绘制米子格的矩形 var canvasWidth =800; var canvasHeight = canvasWidth; var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d"); canvas.width = canvasWidth; canvas.height = canvasHeight;//2.绘制米子格的矩形drawGrid(); function drawGrid(){ context.save(); context.strokeStyle = "rgb(230,11,9)"; context.beginPath(); context.moveTo( 3 , 3 ); context.lineTo( canvasWidth - 3 , 3 ); context.lineTo( canvasWidth - 3 , canvasHeight - 3 ); context.lineTo( 3 , canvasHeight - 3 ); context.closePath(); context.lineWidth = 6; context.stroke(); context.beginPath(); drawDashedLine(context,0,0,canvasWidth, canvasHeight, 8); drawDashedLine(context,canvasWidth,0,0, canvasHeight, 8); drawDashedLine(context,canvasWidth/2,0,canvasWidth/2, canvasHeight, 8); drawDashedLine(context,0,canvasHeight/2,canvasWidth, canvasHeight/2, 8); context.restore();}//2.1绘制虚线function drawDashedLine(context, x1, y1, x2, y2, dashLength) {//传入参数:上下文,起点,终点,虚线间隔 dashLength = dashLength === undefined ? 5 : dashLength;//运用三元表达式实现默认参数 var deltaX = x2 - x1;//水平长度 var deltaY = y2 - y1;//垂直长度 var numDashes = Math.floor( Math.sqrt(deltaX * deltaX + deltaY * deltaY) / dashLength);//虚线数量 for (var i=0; i < numDashes; ++i) { context[ i % 2 === 0 ? 'moveTo' : 'lineTo' ] (x1 + (deltaX / numDashes) * i, y1 + (deltaY / numDashes) * i); } context.lineWidth = 1; context.stroke();};</script></body></html>
0 0
- canvas绘制虚线
- canvas-绘制虚线
- canvas 绘制虚线
- CANVAS绘制虚线和圆点虚线
- android 用canvas绘制虚线
- Canvas学习:绘制虚线和圆点线
- canvas学习总结四:绘制虚线
- Android开发-----03-使用Canvas绘制虚线……
- 【实例】html5-canvas中实现绘制虚线的方法
- 用canvas绘制圆点虚线的函数
- Html5 Canvas 绘制虚线和实线的切换方法
- 绘制虚线
- Canvas画虚线
- canvas画虚线
- AS3 绘制 虚线
- 绘制粗虚线
- cocos2d 绘制虚线
- android 绘制虚线效果
- Mongodb源码分析--Mongos之balancer(均衡)
- 员工3个月离职和2年左右离职 差别超乎你的想象
- Eclipse中java向数据库中添加数据,更新数据,删除数据
- Android数据库greenDAO框架用法和源码分析
- Java中的移位运算符:<<,>>,>>>
- canvas 绘制虚线
- mysql夸库触发器
- Eclipse中java获得mysql的查询结果集
- 你真的读懂了书?
- java更改数据库中的数据
- Android 消息框显示天数
- linux下安装mysql5.7
- Java删除数据库中的数据
- java连接数据库的模糊查询