javascript - 为什么在绘制实线时会在 Canvas 上看到奇怪的曲线?

标签 javascript canvas html5-canvas

我只是为了好玩而编写一些代码,我注意到一个奇怪的细节。我有 Canvas ,这是在其中绘制线条的代码。 这是示例:https://jsfiddle.net/vladyslavkushney/mf3p5e2n/

for (let y = 0; y < 400; y++) {
    drawLine(0, 200, 400, y);    
}
/* ... */
var drawLine = (fromX, fromY, toX, toY) => {
    ctx.beginPath();    
    ctx.moveTo(fromX, fromY);
    ctx.lineTo(toX, toY);
    ctx.strokeStyle = "rgb(255,0,0)";
    ctx.stroke();
}

简单来说,就是从 (0, 200) 到 (400, y) 中的每一个绘制 400 条线。 结果是三 Angular 形。我看到的是这样的:

canvas image

我很好奇为什么我在右侧看到奇怪的曲线而不是实心的红色三 Angular 形?

最佳答案

您看到的曲线是混叠伪像。绘制每条线时,都会对其进行抗锯齿处理,但这是相对于其之前线的模糊边缘来完成的。

因此,当每条线的模糊边缘合并成越来越红的颜色时,就会产生一种伪像,直到当线完全水平时,它们在红色和白色之间的中间达到峰值。近水平线也几乎完全掩盖了之前绘制的邻居,形成了粉红色的空白。

关于javascript - 为什么在绘制实线时会在 Canvas 上看到奇怪的曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602131/

相关文章:

javascript - 使用网格中的多个不同图像填充 Canvas 形状

javascript - FileReader 是否需要更多时间来加载?

javascript - 为什么给定特定坐标时 Canvas 图像绘制不正确

javascript - 为什么 window.innerWidth 没有返回正确的值?

javascript - AngularJS - ng 指令的设置方式与自定义指令相同吗?

javascript - Canvas 对齐问题

javascript - HTML > 根据窗口和图像大小旋转和缩放图像

javascript - 两个人在同一张 Canvas 上作画

javascript - ZingChart如何获取所有的标签

javascript - 在 JavaScript 代码中使用 PHP 变量