Canvas 绘制基本的图形
初始化
1 var myCanvas = document.querySelector('canvas'); 2 var ctx = myCanvas.getContext('2d');
直线
//帽子lineCap: butt\round\square
//拐点lineJoin: miter\round\bevel
//虚线setLineDash: ([5,10,15])
ctx.beginPath(); ctx.moveTo(100, 20); ctx.lineTo(125, 10); ctx.lineTo(150, 20); ctx.lineCap = 'round'; ctx.strokeStyle = 'blue'; ctx.lineWidth = 5; //描边 ctx.stroke(); ctx.beginPath(); ctx.moveTo(100, 50); ctx.lineTo(150, 50); ctx.lineCap = 'square'; ctx.strokeStyle = 'red'; ctx.lineWidth = 5; //描边 ctx.stroke(); //渐变 for (let i = 0; i < 255; i++) { ctx.beginPath(); ctx.moveTo(250 + i - 1, 25); ctx.lineTo(250 + i, 25); ctx.lineWidth = 20; ctx.strokeStyle = `rgb(100,${i},${i})`; ctx.stroke(); }
三角形
闭合closePath
1 //三角形(闭合) 2 ctx.beginPath(); 3 ctx.moveTo(25, 25); 4 ctx.lineTo(50, 25); 5 ctx.lineTo(50, 50); 6 7 ctx.closePath(); 8 //描边 9 ctx.fill();
矩形
非零环绕,通过逆序实现镂空矩形
1 ctx.beginPath(); 2 ctx.moveTo(175, 25); 3 ctx.lineTo(200, 25); 4 ctx.lineTo(200, 50); 5 ctx.lineTo(175, 50); 6 ctx.closePath(); 7 8 ctx.moveTo(180, 30); 9 ctx.lineTo(180, 40); 10 ctx.lineTo(190, 40); 11 ctx.lineTo(190, 30); 12 ctx.closePath(); 13 //描边 14 ctx.fillStyle = "green"; 15 ctx.fill();