这种情况很难解释,我用一张图来说明:
创建的第一个形状内的那些像素会变亮。用黑色清除屏幕,绘制红色和绿色框,然后绘制路径。到目前为止,我发现的唯一解决方法是将框的线宽设置为 2 像素,原因如下所述。
这是用于绘制正方形的代码:
sctx.save();
sctx.strokeStyle = this.color;
sctx.lineWidth = this.width;
sctx.beginPath();
sctx.moveTo(this.points[0].x, this.points[0].y);
for (var i = 1; i < this.points.length; i++)
{
sctx.lineTo(this.points[i].x, this.points[i].y);
}
sctx.closePath();
sctx.stroke();
sctx.restore();
和行:
sctx.save();
sctx.strokeStyle = 'orange';
sctx.lineWidth = 5;
console.log(sctx);
sctx.beginPath();
sctx.moveTo(this.points[0].x, this.points[0].y);
for (var i = 1; i < this.points.length; i++)
{
sctx.lineTo(this.points[i].x, this.points[i].y);
}
sctx.closePath();
sctx.stroke();
sctx.restore();
以及以 2px 宽度绘制框的相同情况的图片:
也许是lineTo()
在弄乱 alpha 值?任何帮助是极大的赞赏。
sctx.closePath();
编辑:为了澄清,当从正在绘制的路径中省略时,也会发生同样的事情。