js使用canvas画多边形,根据一个区域数组上色

js使用canvs绘制多边形,或者根据后端给的二维数组,绘制一个区域,给区域上色

  • index.html
<canvas id="myCanvas" width="285" height="401"></canvas>
  • index.js
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
// 给定一个二维数组为x,y坐标
let res_data = [[10,10], [30, 102], [90, 190], [162, 110], [88, 13], ]
var poly = flatten(res_data);

// 二维数组转化为一维数组
function flatten(arr) {
  return [].concat(...arr.map(x =>
    Array.isArray(x) ? flatten(x) : x
  ))
}
// 设置填充颜色
context.fillStyle = "#ff3e2968";
// 绘制多边形
polygon(poly, context);
// 绘制多边形遮罩层
function polygon(poly, context) {
  context.beginPath();
  context.moveTo(poly[0], poly[1]);
  for (var i = 2; i < poly.length; i += 2) {
    context.lineTo(poly[i], poly[i + 1]);
    console.log(poly[i], poly[i + 1]);
  }
  context.closePath();
  context.fill();
  context.stroke();
  context.closePath()
}
  • 效果图
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值