Javascript 框中填充当前颜色后如何更改笔划颜色
我要创建以下设计说明: 步骤1:默认状态为白色背景上的类型 第2步:光标跟踪并绘制 第三步:如果你将整个屏幕填充为红色,那么光标绘制将变为白色 第四步:你用白色画画 第5步:如果用图形填充整个屏幕,则返回到第1步,背景为全白色 我已经完成了任务,直到第2步,但无法改变颜色,一旦整个屏幕充满红色 所以简而言之,, 一旦用户用红色填充框,我想将颜色更改为白色。 同样,一旦盒子里装满了白色,我想把它改回红色 请检查代码笔中的代码-Javascript 框中填充当前颜色后如何更改笔划颜色,javascript,html,canvas,html5-canvas,2d,Javascript,Html,Canvas,Html5 Canvas,2d,我要创建以下设计说明: 步骤1:默认状态为白色背景上的类型 第2步:光标跟踪并绘制 第三步:如果你将整个屏幕填充为红色,那么光标绘制将变为白色 第四步:你用白色画画 第5步:如果用图形填充整个屏幕,则返回到第1步,背景为全白色 我已经完成了任务,直到第2步,但无法改变颜色,一旦整个屏幕充满红色 所以简而言之,, 一旦用户用红色填充框,我想将颜色更改为白色。 同样,一旦盒子里装满了白色,我想把它改回红色 请检查代码笔中的代码- window.onload=函数(){ var myCanvas=d
window.onload=函数(){
var myCanvas=document.getElementById(“myCanvas”);
var ctx=myCanvas.getContext(“2d”);
//填充窗的宽度和高度
myCanvas.width=window.innerWidth;
myCanvas.height=window.innerHeight;
//设置背景色
ctx.fillStyle=“#fff”;
fillRect(0,0,myCanvas.width,myCanvas.height);
//鼠标事件处理程序
如果(我的画布){
var isDown=假;
var canvasX,canvasY;
ctx.lineWidth=5;
$(myCanvas)
.mousedown(函数(e){
isDown=真;
ctx.beginPath();
canvasX=e.pageX-myCanvas.offsetLeft;
canvasY=e.pageY-myCanvas.offsetTop;
ctx.moveTo(canvax,canvasY);
})
.mousemove(函数(e){
如果(isDown!==false){
canvasX=e.pageX-myCanvas.offsetLeft;
canvasY=e.pageY-myCanvas.offsetTop;
ctx.lineTo(画布,画布);
ctx.strokeStyle=“#000”;
ctx.stroke();
}
})
.mouseup(函数(e){
isDown=假;
ctx.closePath();
});
}
//触摸事件处理程序
抽签={
开始:错,
启动:功能(evt){
ctx.beginPath();
移动到(
evt.touch[0]。第x页,
evt.touchs[0]。页面
);
this.started=true;
},
移动:功能(evt){
如果(此.started){
ctx.lineTo(
evt.touch[0]。第x页,
evt.touchs[0]。页面
);
ctx.strokeStyle=“#000”;
ctx.lineWidth=5;
ctx.stroke();
}
},
结束:功能(evt){
this.start=false;
}
};
//触摸事件
myCanvas.addEventListener('touchstart',draw.start,false);
myCanvas.addEventListener('touchend',draw.end,false);
myCanvas.addEventListener('touchmove',draw.move,false);
//禁用页面移动
document.body.addEventListener('touchmove',function(evt){
evt.preventDefault();
},假);
};
请提供您宝贵的建议,因为我有一个非常重要的截止日期,要在周日排爆前完成。您需要验证每个像素值,并与红色或白色(RGB值)进行比较 使用ctx.getImageData获取颜色数组。此数组的长度=宽度*高度*4个大小,因为它保存4个信息:r、g、b 和a。因此,用i+4的交互作用旋转一个循环。在交互中,你可以用i,i+1和i+2得到r,g和b 红色是R=255,G=0,B=0 白色是R=255,G=255,GB=255
r=arrData.data[y];
g=arrData.数据[y+1]
b=arrData.数据[y+2]
如果(x==“红色”){
如果((r!=255)| |(g!=0)| |(b!=0)){
控制台日志(r、g、b)
返回;
}
}否则{
如果((r!=255)| |(g!=255)| |(b!=255)){
控制台日志(r、g、b)
返回;
}
}
看看这个:
如果这个答案有助于您检查是否正确或正确
<body onload="init()">
<canvas id="can" width="150" height="150" style="position:absolute;top:10%;left:10%;border:2px solid;"></canvas>
<img id="canvasimg" style="position:absolute;top:10%;left:52%;" style="display:none;">
window.onload = function() {
var myCanvas = document.getElementById("myCanvas");
var ctx = myCanvas.getContext("2d");
// Fill Window Width and Height
myCanvas.width = window.innerWidth;
myCanvas.height = window.innerHeight;
// Set Background Color
ctx.fillStyle="#fff";
ctx.fillRect(0,0,myCanvas.width,myCanvas.height);
// Mouse Event Handlers
if(myCanvas){
var isDown = false;
var canvasX, canvasY;
ctx.lineWidth = 5;
$(myCanvas)
.mousedown(function(e){
isDown = true;
ctx.beginPath();
canvasX = e.pageX - myCanvas.offsetLeft;
canvasY = e.pageY - myCanvas.offsetTop;
ctx.moveTo(canvasX, canvasY);
})
.mousemove(function(e){
if(isDown !== false) {
canvasX = e.pageX - myCanvas.offsetLeft;
canvasY = e.pageY - myCanvas.offsetTop;
ctx.lineTo(canvasX, canvasY);
ctx.strokeStyle = "#000";
ctx.stroke();
}
})
.mouseup(function(e){
isDown = false;
ctx.closePath();
});
}
// Touch Events Handlers
draw = {
started: false,
start: function(evt) {
ctx.beginPath();
ctx.moveTo(
evt.touches[0].pageX,
evt.touches[0].pageY
);
this.started = true;
},
move: function(evt) {
if (this.started) {
ctx.lineTo(
evt.touches[0].pageX,
evt.touches[0].pageY
);
ctx.strokeStyle = "#000";
ctx.lineWidth = 5;
ctx.stroke();
}
},
end: function(evt) {
this.started = false;
}
};
// Touch Events
myCanvas.addEventListener('touchstart', draw.start, false);
myCanvas.addEventListener('touchend', draw.end, false);
myCanvas.addEventListener('touchmove', draw.move, false);
// Disable Page Move
document.body.addEventListener('touchmove',function(evt){
evt.preventDefault();
},false);
};