【问题标题】:Canvas strokeStyle not reliably changing?画布 strokeStyle 不能可靠地改变?
【发布时间】:2011-10-07 14:32:43
【问题描述】:

这是我的代码。出于某种原因,它画出的线条大多是灰色的。

尽管我的绘图调用实际上并没有重叠,但似乎有些线条是用两种笔触样式重叠绘制的。有些线条是白色的,内部是灰色的。我的白线比灰色的粗,所以很明显它画了两条线。画布绘制调用是异步的还是什么?

知道为什么吗?

        for (var i=0; i<minor_lanes.length; i++) {
            connect(minor_lanes[i], "#333", 3);
        }

        for (var i=0; i<major_lanes.length; i++) {
            connect(major_lanes[i], "#fff", 4);
        }

        for (var i=0; i<limited_lanes.length; i++) {
            connect(limited_lanes[i], "#FFFF99", 2);
        }

        function connect(id, color, width) {
            if (!id) {
                return;
            }
            ctx.lineWidth = width;
            ctx.strokeStyle = color;
            $('#' + id).each(function() {
            var laneX = parseInt($(this).css('left')) + $(this).width()/2;
            var laneY = parseInt($(this).css('top')) + $(this).height()/2;
            ctx.moveTo(x,y);
            ctx.lineTo(laneX, laneY);
            ctx.stroke();
            });
        }

【问题讨论】:

    标签: javascript canvas


    【解决方案1】:

    我想你忘记了

    ctx.beginPath();
    // draw path
    // stroke
    ctx.closePath();
    

    【讨论】:

    • 就是这样。所以我只是建立了一条线路。关于画布绘图的文档非常稀少。感谢您的帮助。
    • "Frustratingly sparse" if you don't know this page. 另外,只有 beginPath() 实际上会影响当前路径是什么——closePath() 基本上在开头添加了一个 lineTo()最后一个子路径,然后在该点开始一个新的子路径。
    • ctx.closePath() 不会隐式调用ctx.stroke()
    猜你喜欢
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    相关资源
    最近更新 更多