【问题标题】:HTML5 Canvas - Draw segments and circles - Different color for one circleHTML5 Canvas - 绘制线段和圆圈 - 一个圆圈的不同颜色
【发布时间】:2016-06-24 00:29:24
【问题描述】:

我尝试绘制由线段连接的圆圈。除了第一个圆圈(位于画布的中心并且必须是黑色)之外,我希望这些段具有黑色和蓝色圆圈。

这是显示当前结果的捕获:

如您所见,结果很好,除了第一个圆圈仍然是蓝色的。

代码如下:

// Get context
context = canvas.getContext('2d');

context.fillStyle = 'white';
context.fillRect(0, 0, 650, 650);

// Draw black segments
context.beginPath();
context.moveTo(x0, y0);
context.lineTo(x1, y1);
context.lineTo(x2, y2);
context.lineTo(x3, y3);
context.strokeStyle = 'black';
context.stroke();

// Draw circles (blue except for the first which is black)
context.beginPath();
// Create sub-path
context.moveTo(x0, y0);
context.arc(x0, y0, radius, 0, 2 * Math.PI);
context.fillStyle = 'black';
context.fill();
context.closePath();
// Close sub-path

// Create sub-path
context.moveTo(x1, y1);
context.arc(x1, y1, radius, 0, 2 * Math.PI);
context.closePath();
// Close sub-path

// Create sub-path
context.moveTo(x2, y2);
context.arc(x2, y2, radius, 0, 2 * Math.PI);
context.closePath();
// Close sub-path

// Create sub-path
context.moveTo(x3, y3);
context.arc(x3, y3, radius, 0, 2 * Math.PI);
context.closePath();
// Close sub-path

// Fill all sub-paths
context.stroke();
context.fillStyle = 'blue';
context.fill();

看来我不能只填一个圆圈:

    context.beginPath();
    // Create sub-path
    context.moveTo(x0, y0);
    context.arc(x0, y0, radius, 0, 2 * Math.PI);
    context.fillStyle = 'black';
    context.fill();
    context.closePath();
    // Close sub-path

如果有人能看出绕过这个问题有什么问题。

提前致谢

【问题讨论】:

    标签: javascript html canvas


    【解决方案1】:

    你需要开始一条新的路径来填充你的蓝色圆圈

    context.beginPath();
    //draw black circle
    context.fill();
    
    context.beginPath();
    //draw blue arcs
    context.fillStyle='blue
    context.fill();
    

    fiddle here

    【讨论】:

    • 谢谢,但如果我用灰色代替黑色,我会遇到另一个问题,你可以看到它在第一个圆的中心和它的边缘之间画了一个小段:jsfiddle.net/3ouLju43
    • 我也在学习这个 :) 你需要在移动后开始路径:参见第 23-24 行:jsfiddle.net/3ouLju43/1
    猜你喜欢
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 2014-09-25
    相关资源
    最近更新 更多