html:
<canvas id="fir_canvas" width="400" height="400">
const canvas = document.getElementById('fir_canvas');
const ctx = canvas.getContent('2d');
ctx.strokeStyle = “#0000ff”; // 线条的颜色
ctx.lineWidth = 8; // 线条的粗细
一条线
ctx.moveTo(100,100);
ctx.lineTo(500,500);
ctx.stroke(); // 绘制
一条拐弯的线(例子效果为一个折形)
ctx.moveTo(2, 2);
ctx.lineTo(16, 12);
ctx.lineTo(2, 24);
ctx.stroke();
效果:
例子二折形闭合成一个三角形
ctx.moveTo(20, 20);
ctx.lineTo(160, 120);
ctx.lineTo(20, 240);
ctx.lineTo(20, 20);
ctx.lineWidth = 8;
ctx.stroke();
路径回到起始点即可,但这样在设置线条粗细过粗的时候会有一些问题:
所以当绘制封闭图形时应该使用标准方法closePath(),见例五。
多条例子二 beginPath()
beginPath()方法,就会对之前绘制的路径进行清空,但不会回到(0,0)原点。
// 共用的样式写在beginPath()外面
ctx.beginPath();
ctx.moveTo(2, 2);
ctx.lineTo(16, 12);
ctx.lineTo(2, 24);
ctx.lineTo(2, 2);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(32, 2);
ctx.lineTo(46, 12);
ctx.lineTo(32, 24);
ctx.lineTo(32, 2);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(62, 2);
ctx.lineTo(76, 12);
ctx.lineTo(62, 24);
ctx.lineTo(62, 2);
ctx.strok 大专栏 canvas基本eStyle = "#0000ff";
ctx.stroke();
效果
封闭图形标准写法
ctx.beginPath();
ctx.moveTo(62, 2);
ctx.lineTo(76, 12);
ctx.lineTo(62, 24);// 省略了最后回到原点那句
ctx.closePath();
ctx.stroke();
用beginPath()第一句可以用moveTo()也可以用lineTo()
不用beginPath()得用moveTo();
画矩形 正方形 (因为必须有宽高) strokeRect(x, y, width, height)
strokeRect() 方法绘制矩形(不填色)。笔触的默认颜色是黑色。
使用 strokeStyle 属性来设置笔触的颜色、渐变或模式
ctx.lineWidth = 8;
ctx.strokeStyle = "#333";
ctx.strokeRect(10,10,200,200);
效果
lineCap
属性 定义线段开头和结尾的形状
butt(默认值),round,square
效果(从上到下依次为butt round square)
round只对线条的开头和结尾处有效果,对线段之间的连接处没有作用
lineJoin
属性 miterLimit
属性 线条与线条之间的连接方式
lineJoin: miter(默认值,尖角) bevel(衔接) round(圆角)
当lineJoin属性值是miter时,miterLimit起作用,默认值为10。
fill()
fillStyle
| fillRect()
先填充,再画边框
ctx.beginPath();
ctx.lineTo(100, 100);
ctx.lineTo(200, 100);
ctx.lineTo(200, 200);
ctx.lineTo(100, 200);
ctx.closePath();
ctx.lineWidth = 8;
ctx.fillStyle = "#ddd";
ctx.fill();
ctx.stroke();
效果
fillRect(x,y,width,height)
绘制“已填色”的矩形(因为必须有宽高)。默认的填充颜色是黑色。
使用 fillStyle 属性来设置用于填充绘图的颜色、渐变或模式。如果不设置fillStyle则使用默认的黑色。
在例六的基础上
ctx.lineWidth = 8;
ctx.strokeStyle = "#333";
ctx.fillStyle = "antiquewhite";
ctx.fillRect(10,10,200,200);
ctx.strokeRect(10,10,200,200);
效果
原文:https://www.cnblogs.com/lijianming180/p/12041440.html