【发布时间】:2016-12-08 00:21:02
【问题描述】:
这是我在 jsfiddle 上的完整代码: https://jsfiddle.net/f5z8qtcp/7/
要重现我的问题,请按照以下步骤操作:
单击红色边框的画布并拖动鼠标以创建一个矩形。
现在在画布的另一部分创建另一个矩形,您会看到所有矩形的颜色都相同,并且在创建新矩形时每个矩形的颜色都会发生变化。
我想为每个矩形获取特定的颜色。
改变颜色的部分代码是:
function drawAll(){
ctx.clearRect(0, 0, canvas.width, canvas.height);
var color_s = 'hsl(' + 360 * Math.random() + ', 50%, 50%)';
ctx.lineWidth=1;
ctx.strokeStyle=color_s;
ctx.fillStyle = color_s;
for(var i=0;i<rects.length;i++){
var r=rects[i];
ctx.strokeRect(r.left,r.top,r.right-r.left,r.bottom-r.top);
ctx.fillRect(r.left,r.top,r.right-r.left,r.bottom-r.top);
}
}
这一行让我们生成随机颜色:
var color_s = 'hsl(' + 360 * Math.random() + ', 50%, 50%)';
请更正我在此代码中的错误。
编辑
我通过这个小修改解决了部分问题:
function drawAll(){
ctx.clearRect(0, 0, canvas.width, canvas.height);
for(var i=0;i<rects.length;i++){
var r=rects[i];
var color_s = 'hsl(' + 360 * Math.random() + ', 50%, 50%)';
ctx.lineWidth=1;
ctx.strokeStyle=color_s;
ctx.fillStyle = color_s;
ctx.strokeRect(r.left,r.top,r.right-r.left,r.bottom-r.top);
ctx.fillRect(r.left,r.top,r.right-r.left,r.bottom-r.top);
}
}
但是当我点击创建新矩形时,所有其他矩形的颜色都会改变。
【问题讨论】:
标签: javascript jquery html canvas