顺时针逆时针都想实现绘制带孔的面
我该怎么做呢
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas</title>
</head>
<body>
<canvas id="test" width="2000" height="1500" style="position: absolute;cursor: pointer;"></canvas>
<script>
//二维数组,第一个外围面,第二个带孔面
//var arr1 = [[[485, 72],[1435, 134],[1483, 948],[433,866]],[[1082, 410],[1132, 506],[987, 516],[982, 405]]];//顺
//var arr1 = [[[485, 72],[1435, 134],[1483, 948],[433,866]],[[1082, 410],[982, 405],[987, 516],[1132, 506]]];//逆
//var arr1 = [[[0,0],[800,0],[800,800],[0,800]],[[200,200],[400,200],[400,400],[200,400]]];//顺时针坐标,不可绘制带孔洞面
var arr1 = [[[0,0],[800,0],[800,800],[0,800]],[[200,200],[200,400],[400,400],[400,200]]];//逆时针坐标,可绘制带孔洞面
var bg = document.getElementById('test');
var ctx = bg.getContext('2d');
ctx.beginPath();
var i, j, len, len2, point, drawMethod;
for (i = 0, len = arr1.length; i < len; i++) {
var obj = arr1[i];
for (j = 0, len2 = obj.length; j < len2; j++) {
point = obj[j];
drawMethod = (j === 0? 'move' : 'line') + 'To';
ctx[drawMethod](point[0], point[1]);
}
ctx.closePath();
ctx.stroke();
}
ctx.save();
ctx.fillStyle = "#ff00ff";
ctx.filter = "none";
ctx.globalAlpha = 0.5;
ctx.lineDashOffset = 0;
ctx.lineWidth = 5;
ctx.strokeStyle = "#00ff48";
ctx.fill();
ctx.globalAlpha = 0.5;
ctx.stroke();
ctx.restore();
</script>
</body>
</html>
效果截图
var obj = arr1[i];
改为 let obj = arr1[i]试一下