Javascript 如何为画布笔划颜色使用颜色选择器?
在我的基本画布绘制工具中,我希望用户能够使用颜色选择器更改笔划的颜色。因此,我希望Javascript 如何为画布笔划颜色使用颜色选择器?,javascript,css,html,canvas,Javascript,Css,Html,Canvas,在我的基本画布绘制工具中,我希望用户能够使用颜色选择器更改笔划的颜色。因此,我希望ctx.strokeStyle更改为用户在颜色选择器上选择的任何颜色。我已经通过使用input type=“color”将颜色选择器添加到画布中,但我想知道如何根据颜色选择器中拾取的颜色来更改画布中笔划/笔刷的颜色 这是我目前的画布: 我希望用户使用以下命令更改笔划颜色: 以下是一个简单的示例,它是“工具”画布上的颜色选择器,用于设置绘图画布上的当前颜色(填充/笔划): 对于“颜色控制盘”选择器,可以在工具画布
ctx.strokeStyle
更改为用户在颜色选择器上选择的任何颜色。我已经通过使用input type=“color”
将颜色选择器添加到画布中,但我想知道如何根据颜色选择器中拾取的颜色来更改画布中笔划/笔刷的颜色
这是我目前的画布:
我希望用户使用以下命令更改笔划颜色:
以下是一个简单的示例,它是“工具”画布上的颜色选择器,用于设置绘图画布上的当前颜色(填充/笔划): 对于“颜色控制盘”选择器,可以在工具画布上绘制控制盘,然后使用context.getImageData获取鼠标光标下的像素颜色数据
var imgData=ctx.getImageData(mouseX,mouseY,1,1);
var data=imgData.data;
return("rgba("+data[0]+","+data[1]+","+data[2]+","+data[3]+")");
用户在“工具”画布上选择颜色后,可以使用context.strokeStyle和context.fillStyle使这些颜色在绘图画布上处于活动状态。以下是“工具”画布上的颜色选择器的一个简单示例,用于设置绘图画布上的当前颜色(填充/笔划): 对于“颜色控制盘”选择器,可以在工具画布上绘制控制盘,然后使用context.getImageData获取鼠标光标下的像素颜色数据
var imgData=ctx.getImageData(mouseX,mouseY,1,1);
var data=imgData.data;
return("rgba("+data[0]+","+data[1]+","+data[2]+","+data[3]+")");
用户在工具画布上选择颜色后,可以使用context.strokeStyle和context.fillStyle使这些颜色在绘图画布上处于活动状态。您需要做的就是获取颜色输入的值,并将
strokeStyle设置为该值
您所需要做的就是获取颜色输入的值,并将strokeStyle
设置为该值
根据你发布的图片,看起来你想要一个像markE在他的答案中发布的解决方案。尽管如此,在文本中您提到了type=“color”
。如果要使用此输入,可以检查此工作模式。在第二种情况下,请记住许多浏览器还不支持它。如果要查看支持它的浏览器列表,请单击
下面我将尝试详细说明我对您的JSFIDLE做了哪些更改
首先,您需要设置对颜色输入的回调。这意味着当输入值更改时,它调用方法change
。函数change
获取输入的值,并在名为color
的全局变量中进行设置
var color = "rgb(255,0,0)";
function change(e){
color = this.value;
}
document.getElementById("color").onchange = change;
另一个更改在draw
函数中。在绘制之前,它将获取变量color
中的值。这样,下次更改颜色时,它将更新笔划中使用的颜色
ctx.strokeStyle = color;
通过这些更改,如果将来您决定使用另一个工具获取颜色(例如,您可以检查该工具是否支持input=“color”
,并在这种情况下使用不同的颜色选择器),您只需根据发布的图片在变量color
中设置新颜色,看起来你想要一个像markE在回答中所说的那样的解决方案。尽管如此,在文本中您提到了type=“color”
。如果要使用此输入,可以检查此工作模式。在第二种情况下,请记住许多浏览器还不支持它。如果要查看支持它的浏览器列表,请单击
var color = "rgb(255,0,0)";
function change(e){
color = this.value;
}
document.getElementById("color").onchange = change;
下面我将尝试详细说明我对您的JSFIDLE做了哪些更改
首先,您需要设置对颜色输入的回调。这意味着当输入值更改时,它调用方法change
。函数change
获取输入的值,并在名为color
的全局变量中进行设置
var color = "rgb(255,0,0)";
function change(e){
color = this.value;
}
document.getElementById("color").onchange = change;
另一个更改在draw
函数中。在绘制之前,它将获取变量color
中的值。这样,下次更改颜色时,它将更新笔划中使用的颜色
ctx.strokeStyle = color;
通过这些更改,如果将来您决定使用其他工具来获取颜色(例如,您可以检查,看看它是否支持input=“color”
,并在这种情况下使用不同的颜色选择器),只需在变量color
中设置新颜色,为什么不能在事件onchange
中获取其值?是我在JSFIDLE上找到的一个示例。顺便说一句,目前有些浏览器不支持type=color
。要查看列表,请检查此+1+,了解如何在浏览器中打开选项卡<代码>如何询问:)@wendelbsilva谢谢,我将尝试尝试破解…这是我的代码--因此我希望以某种方式将笔划颜色更改为用户使用颜色选择器选择的任何颜色。@user3088233。您只需获取事件onchange
上的颜色,并将其设置为strokeStyle
。从您的代码中,我添加了回调更改
。在此函数中,它将颜色值
设置为变量颜色
。在draw
方法中,它设置了strokeStyle
。为什么不能在事件onchange
上获取其值?是我在JSFIDLE上找到的一个示例。顺便说一句,目前有些浏览器不支持type=color
。要查看列表,请检查此+1+,了解如何在浏览器中打开选项卡<代码>如何询问:)@wendelbsilva谢谢,我将尝试尝试破解…这是我的代码--因此我希望以某种方式将笔划颜色更改为用户使用颜色选择器选择的任何颜色。@user3088233。您只需获取事件onchange
上的颜色,并将其设置为strokeStyle
。从您的代码中,我添加了回调更改
。在此函数中,它将颜色值
设置为变量颜色
。在draw
方法中,设置stro
var color = "rgb(255,0,0)";
function change(e){
color = this.value;
}
document.getElementById("color").onchange = change;