Canvas 如何在画布上使用鼠标单击删除颜色?

Canvas 如何在画布上使用鼠标单击删除颜色?,canvas,flood-fill,Canvas,Flood Fill,我想为我的网站实现背景橡皮擦功能。 我用帆布做的。我可以将图像数据放入画布,并从画布获取图像数据 我已经实现了泛光填充算法来去除特定位置的颜色 我在这里试过: `http://jsfiddle.net/Mark_1998/boz43x87/` 我在谷歌上搜索了太多,我发现在这个算法中黑色没有被去除 作为泛光填充算法的一个规则,如果目标颜色和替换颜色相同,则它将返回函数(无需进一步处理) 在我的情况下,这里也一样。 简言之: 目标颜色:rgba(255,0,0145)->替换颜色:rgba(0,

我想为我的网站实现背景橡皮擦功能。 我用帆布做的。我可以将图像数据放入画布,并从画布获取图像数据

我已经实现了泛光填充算法来去除特定位置的颜色

我在这里试过:

`http://jsfiddle.net/Mark_1998/boz43x87/`
我在谷歌上搜索了太多,我发现在这个算法中黑色没有被去除

作为泛光填充算法的一个规则,如果目标颜色和替换颜色相同,则它将返回函数(无需进一步处理)

在我的情况下,这里也一样。 简言之:

  • 目标颜色:rgba(255,0,0145)->替换颜色:rgba(0,0,0,0);->工作正常(去除红色并设置透明黑色)
  • 目标颜色:rgba(0,0,0255)->替换颜色:rgba(0,0,0,0)=>工作不正常(原因:我只检查了三种颜色,即R、G、B)
  • 有没有办法将颜色与其alpha值匹配

    若我用任何其他颜色替换新颜色(替换颜色),那个么当目标颜色和替换颜色相同时,它不会从图像中删除该颜色。e、 g.我设置了替换颜色rgba(255255255,0)而不是rgba(0,0,0),这样它将精细地从图像中去除黑色,但无法从图像中去除白色

    移除该颜色的唯一方法是使用其alpha值查找颜色的距离。但我不知道如何找到距离


    请帮助我。

    您可以使用globalAlpha属性更改alpha值

    ctx.globalAlpha = 0;