【发布时间】:2014-01-22 10:45:23
【问题描述】:
问题
我正在尝试创建一个带有不透明度抖动的画笔工具(就像在 Photoshop 中一样)。具体问题是:
在具有不同不透明度的 HTML 画布上绘制笔触。不透明度较高的像素应替换不透明度较低的像素;否则,像素保持不变。
透明度不应在此过程中丢失。笔画在单独的画布上绘制,然后与背景画布合并。
结果应该类似于 this。所有代码和相应的输出都可以在 here (JSFiddle) 中找到。
因为你不能用不同的不透明度来描画一条路径(如果我错了,请纠正我)我的代码为每个段创建了一个具有不同不透明度的路径。
非解决方案 1,使用“变暗”混合模式
变暗混合模式在使用不透明像素时会产生所需的结果,但似乎不适用于透明度。失去透明度会破坏交易。
使用不透明像素:
带有透明像素:
非解决方案 2,使用 'destination-out' 合成运算符
在绘制新的笔画段之前,使用“destination-out”合成运算符从下面的像素中减去其不透明度。然后使用“source-over”添加新的笔画段。这几乎可以工作,但有点不对劲。
寻找解决方案
我想避免手动操作每个像素(我过去做过)。我错过了一些明显的东西吗?这个问题有简单的解决方案吗?
"Links to jsfiddle.net must be accompanied by code."
【问题讨论】:
标签: html canvas blending compositing