javascript - Safari 和 Firefox 使用 Canvas 显示锯齿线

标签 javascript canvas

我很难使用 Canvas 绘制流畅的线条,但仅限于 Safari 和 Firefox。 Chrome 绘制流畅。在 Safari 中看起来像这样:

screenshot http://jacobharris.org/screenshot.jpg

这是我的 JavaScript:

function Draw(x, y, isDown) {
    if (isDown) {
        ctx.beginPath();
        ctx.strokeStyle = color_selected;
        ctx.globalCompositeOperation = "source-over";
        ctx.lineWidth = 15;
        ctx.lineJoin = "round";
        ctx.lineCap = "round";
        if (lastX == 0 && lastY ==0){
            ctx.moveTo(x, y);
        }else{
            ctx.moveTo(lastX, lastY);
        }
        ctx.lineTo(x, y);
        ctx.closePath();
        ctx.stroke();
    }
    lastX = x; lastY = y;
}}

我确保为 lineJoin 和 lineCap 选择“round”。不确定我还需要更改什么。

最佳答案

删除此行:

ctx.closePath();

它应该可以工作。

无需在一行上调用 closePath(),因为您只会在其顶部创建一个重叠实例。 Safari 似乎无法很好地处理这个问题(取决于实现,但猜测是它设置位的方式 - 低级明智;在同一路径实例中存在重叠的地方,它似乎会被异或或不被异或'光栅化时编辑)。

<强> FIDDLE WITH MODIFIED CODE HERE

关于javascript - Safari 和 Firefox 使用 Canvas 显示锯齿线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926667/

相关文章:

javascript - 如何将文本添加到 Canvas 中的弹性碰撞?

javascript - 如何使用 Fabric js 对 Canvas 上的每个对象使用 if isType() ?

javascript - 如何仅根据硬件性能来确定 WebGL 兼容性

javascript - 将 JSON 数组中的字符串元素解析为整数

javascript - 即使返回 false,jQuery 也会刷新页面

JavaScript onChange 处理程序错误

java - 无法让 Canvas/CanvasLayer 在 Playn 中工作

Javascript国际计算?

javascript - 选择选项的当前值存储在哪里?

javascript - Canvas 动画与视频时间同步