Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 框中填充当前颜色后如何更改笔划颜色_Javascript_Html_Canvas_Html5 Canvas_2d - Fatal编程技术网

Javascript 框中填充当前颜色后如何更改笔划颜色

Javascript 框中填充当前颜色后如何更改笔划颜色,javascript,html,canvas,html5-canvas,2d,Javascript,Html,Canvas,Html5 Canvas,2d,我要创建以下设计说明: 步骤1:默认状态为白色背景上的类型 第2步:光标跟踪并绘制 第三步:如果你将整个屏幕填充为红色,那么光标绘制将变为白色 第四步:你用白色画画 第5步:如果用图形填充整个屏幕,则返回到第1步,背景为全白色 我已经完成了任务,直到第2步,但无法改变颜色,一旦整个屏幕充满红色 所以简而言之,, 一旦用户用红色填充框,我想将颜色更改为白色。 同样,一旦盒子里装满了白色,我想把它改回红色 请检查代码笔中的代码- window.onload=函数(){ var myCanvas=d

我要创建以下设计说明:

步骤1:默认状态为白色背景上的类型

第2步:光标跟踪并绘制

第三步:如果你将整个屏幕填充为红色,那么光标绘制将变为白色

第四步:你用白色画画

第5步:如果用图形填充整个屏幕,则返回到第1步,背景为全白色

我已经完成了任务,直到第2步,但无法改变颜色,一旦整个屏幕充满红色

所以简而言之,, 一旦用户用红色填充框,我想将颜色更改为白色。 同样,一旦盒子里装满了白色,我想把它改回红色

请检查代码笔中的代码-


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);
};