我有这些函数来绘制正多边形或由点阵列定义的任何形状。
function polygon(ctx, x, y, radius, sides, startAngle, anticlockwise) {
if (sides < 3) return;
var a = (Math.PI * 2)/sides;
a = anticlockwise?-a:a;
ctx.save();
ctx.translate(x,y);
ctx.rotate(startAngle);
ctx.moveTo(radius, 0);
for (var i = 1; i < sides; i++) {
ctx.lineTo(radius*Math.cos(a*i), radius*Math.sin(a*i));
}
ctx.closePath();
ctx.restore();
}
function plotpolygon(radius, sides, color) {
var context = document.getElementById("logo-canvas").getContext('2d');
context.beginPath();
polygon(context, 256, 256, radius, sides, -Math.PI/2);
context.fillStyle = color;
context.fill();
context.stroke();
}
function plotshape(xpoints, ypoints, color) {
var context = document.getElementById("logo-canvas").getContext('2d');
context.beginPath;
context.moveTo(xpoints[0], ypoints[0]);
for (var i=1; i < xpoints.length; i++) {
context.lineTo(xpoints[i], ypoints[i]);
}
context.closePath();
context.fillStyle = color;
context.fill();
context.stroke();
}
多边形和形状很好,问题是填充颜色。 如果我按以下顺序打电话:
plotpolygon(94, 3, 'yellow');
plotshape(xpoints, ypoints, 'brown');
结果应为黄色三角形,棕色形状与其部分重叠。 但是,我得到了形状重叠的地方 - 黄色,不重叠的地方 - 棕色。 我按mozilla的建议尝试过构图,但没有帮助。
对我来说更奇怪的是,我在画布上有更多的多边形,总是把它们放在最上面 - 大多数是重叠的,但它们有自己的颜色。当我添加一个形状时,问题就开始发生了。
答案 0 :(得分:1)
你有一个拼写错误导致第一个三角形绘图样式在图表中继续。
修复:plotshape内的beginPath必须有括号:
ctx.beginPath();