javascript - 在另一个圆形 Canvas 内绘制一个圆形

标签 javascript html canvas drawing

我正在尝试在 Canvas 中绘制齿轮,但从一开始就遇到了问题。我想要一个中间有空心的实心圆。相反,我得到的看起来像是一个圆圈的轮廓。

这是我的代码:

var ctx = document.getElementById("canvas").getContext("2d"),
i = 0;

function drawGear(){

    ctx.fillStyle = "#000";
    ctx.translate(50,50);
    ctx.arc(0,0,20,0,Math.PI*2);
    ctx.fill();

    ctx.fillStyle = "#FFF";;
    ctx.arc(0,0,5,0,Math.PI*2);
    ctx.fill();
}

drawGear();

http://jsfiddle.net/te3jn/

我相信这个问题与 globalCompositeOperation 有关,但我尝试了其中的几个(source-over、source-atop、destination-over),但似乎没有一个能按照我想要的方式工作。

最佳答案

在绘制第二个圆时,您应该开始一条新路径,如下所示:

ctx.fill();

ctx.beginPath();
ctx.fillStyle = "#FFF";
// ... 

JS Fiddle .

如果没有这个,您实际上将通过第二个 fill 调用重新绘制两个圆圈 - 内部和外部圆圈(请查看 this fiddle 进行演示)

关于javascript - 在另一个圆形 Canvas 内绘制一个圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18819234/

相关文章:

html - 纯css打开/向上打开的下拉菜单

javascript - 是否可以使用 HTML 拖放文件上传,但不使用 AJAX/XHR?

javascript - 在 Fabric.js 中创建山谷文本(带曲线的文本)

android - 在 Android 中使用 Circles 绘制一棵树(字面意思)——不是 TreeView 结构

javascript - AngularJS - 使用 $locationProvider 删除哈希#

javascript - Kendo 自动完成与 Angular 中的服务器过滤,如何操作?

javascript - 由异步创建的未定义无法解析?

html - 保持不同分辨率的位置

html - HTML5 canvas 元素可以使用哪些脚本语言?

JavaScript : White space adding between two string vriable why not in sequence of two strings