【发布时间】:2015-12-17 11:48:30
【问题描述】:
我一直在玩画布元素,发现当我尝试在某些宽度/高度配置中绘制 NxN 均匀的纯色单元格时,它们之间会出现模糊的白色线条。
例如,这个画布应该看起来是黑色的,但包含某种 grid,我猜这是浏览器中抗锯齿错误的结果。
我只想说,这个错误只出现在 一些 配置中,但我想彻底摆脱它。有什么办法可以规避这种情况吗?您是否曾在画布中遇到过抗锯齿问题?
我制作了this fiddle,它演示了这个问题,并允许您使用画布的尺寸和单元格的数量。它还包含我用来绘制单元格的代码,这样您就可以检查它并告诉我是否做错了什么。
var ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
for (var i = 0; i < numberOfCells; ++i) {
for (var j = 0; j < numberOfCells; ++j) {
ctx.fillStyle = '#000';
ctx.fillRect(j * cellWidth, i * cellHeight, cellWidth, cellHeight);
}
}
提前致谢,
彼得。
【问题讨论】:
-
您好 Petr,您似乎忘记提供小提琴链接了,请您更新一下
-
刚刚注意到了。对不起,给你! :)
-
我相信,一个常见的技巧是在开始时将整个画布变换一个像素以避开这一点。
-
确实有道理,
300 / 70 = 4.285...将使任何边缘反锯齿,因此会出现一条线。它似乎做了预期的事情,因为四舍五入...... -
你可以在这里找到解决方案Filling the gaps
标签: javascript html canvas antialiasing