Canvas:绘制线和填充多边形
绘制线和填充多边形
1.绘制线段的API是上下文对象的方法;
2.beginPath:开始定义一条新的路径;
4.lineTo:将上面定义的线段起点和指定的新的点连接起来;
5.到这里只是规划好了思路,还没有在画布上画出任何图形;
6.fill():填充区域,此时只是填充,起点和终点并没有连接起来;
7.closePath:会把起点和终点连接起来;
8.stroke():开始绘制图形,当前路径下的所有子路径都会绘制出来;
9.如果要接着绘制新的路径,记得调用beginPath()方法;
实例:
<style>
#box{
border: 1px gray solid;
}
</style>
<canvas id="box" width="600" height="600">
</canvas>
var canvas=document.querySelector("#box") var pen=canvas.getContext("2d") pen.moveTo(100,200) pen.lineTo(400,400) pen.stroke()

实例2:
var canvas=document.querySelector("#box") var pen=canvas.getContext("2d") pen.moveTo(100,200) pen.lineTo(400,400) pen.lineTo(400,300) // pen.fill() pen.stroke()

打开注释后:
* fill()自动填充是黑色,没有闭合的边也会自动闭合

心电图:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<style>
#box {
border: 1px gray solid;
}
</style>
<canvas id="box" width="600" height="600">
</canvas>
<script>
var canvas = document.querySelector('#box')
var ctx = canvas.getContext("2d")
var x = 60
var arr = []
setInterval(() => {
arr.push(Math.random() * (320 - 10) + 10);
})
setInterval(() => {
//清除画板
canvas.width = 600
x -= (30 / (1000 / 300))
drawori()
draw()
}, 300)
function draw() {
//开启另外套轨迹
ctx.beginPath()
ctx.lineWidth = 1
ctx.strokeStyle = "black"
for (let i = 0; i < arr.length; i++) {
if (i * 30 + x < -30) { continue }
ctx.lineTo(i * 30 + x, 400 - arr[i])
}
ctx.stroke()
}
function drawori() {
ctx.strokeStyle = 'gray'
ctx.moveTo(0, 300)
ctx.lineTo(600, 300)
ctx.stroke()
}
</script>
</body>
</html>
效果图:

浙公网安备 33010602011771号