javascript - 在 Canvas 上绘制多边形时出现间隙

标签 javascript html canvas

我正在使用以下内容在 html Canvas 上绘制多边形:

var canvas = document.getElementById("mycanvas");
var ctx = canvas.getContext("2d");

var numberOfSides = 6,
    size = 20,
    Xcenter = 25,
    Ycenter = 25;

ctx.beginPath();
ctx.moveTo (Xcenter +  size * Math.cos(0), Ycenter +  size *  Math.sin(0));          

for (var i = 1; i <= numberOfSides;i += 1) {
    ctx.lineTo (Xcenter + size * Math.cos(i * 2 * Math.PI / numberOfSides), Ycenter + size * Math.sin(i * 2 * Math.PI / numberOfSides));
}

ctx.strokeStyle = "#000000";
ctx.lineWidth = 10;
ctx.stroke();

不幸的是,它在多边形的末端留下了一个缺口。知道如何解决这个问题吗?

Jsfiddle here

最佳答案

不是画到所有 6 个点,而是只画到前 5 个点,然后调用 ctx.closePath();

http://jsfiddle.net/757mavjb/2/

var canvas = document.getElementById("mycanvas");
var ctx = canvas.getContext("2d");

var numberOfSides = 6,
    size = 20,
    Xcenter = 25,
    Ycenter = 25;

ctx.beginPath();
ctx.moveTo (Xcenter +  size * Math.cos(0), Ycenter +  size *  Math.sin(0));          

for (var i = 1; i < numberOfSides;i += 1) {
    ctx.lineTo (Xcenter + size * Math.cos(i * 2 * Math.PI / numberOfSides), Ycenter + size * Math.sin(i * 2 * Math.PI / numberOfSides));
}
ctx.closePath();

ctx.strokeStyle = "#000000";
ctx.lineWidth = 10;
ctx.stroke();

(注意从 i <= numberOfSidesi < numberOfSides 的变化)

关于javascript - 在 Canvas 上绘制多边形时出现间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28418409/

相关文章:

javascript - Canvas 跟随光标

image - 实时替换图像上的颜色

javascript - P5js 用 WEBGL 绘制慢速草图

php - 在新标签页中打开页面是否有任何PHP函数

html - 根据单元格大小的灵活表格

html - 使包装器/容器响应?

javascript - 如何在没有反斜杠的情况下将 javascript 值作为参数发送

javascript - 带有背景图片的响应式倾斜 Div

多个输入类型=文本和输入类型=颜色的Javascript通用函数

javascript - 减慢 JavaScript Canvas 动画速度的最佳方法?