![]() |
1
5
你做错了什么 差异运算符不是基于像素是否设置的二进制差异,而是RGB成分的差异,因此,您将获得多色覆盖,而不是纯红色覆盖,因为混合图像的RGB成分差异在像素之间不同。 出身背景 您正在尝试做类似于 masked bit-blit operation 混合模式(基本上是基于黑上白掩模的像素数据的OR和AND)。这是可能的,尽管在JavaFX8中内置的混合有点棘手。 您可以在混合API中创建一个功能请求,以获得对bit blt风格基础知识的额外支持,并公开一个完整的 porter duff compositing 类似于实现 Swing has 因此,基础混合引擎具有更大的功率,并且可能更易于使用。 选择 首选的做法是在像photoshop这样的图像编辑器中预处理蒙版,将黑色部分转换为alpha通道,然后您可以将蒙版叠加在原始蒙版之上,默认的合成模式将使用它。
要使启用alpha的遮罩变为红色,可以使用
另一种选择是PixelReader解决方案(我认为,如果您无法预先转换掩码以使用alpha,这是很好的)。 混合操作可以在适当的硬件上进行硬件加速。因此,如果您经常使用混合,则使用混合可能会更快(但您必须在大图像上快速运行许多混合,才能真正注意到任何类型的性能差异)。 使用混合操作的样本溶液 样本输出
输入图像 原始.jpg
模板.jpg
密码
|
![]() |
V.S · CSS覆盖后的内容位于覆盖下方 7 年前 |
![]() |
user1481397 · SAS绘图SGPLOT 7 年前 |
![]() |
Phillip · QLabel在gif上覆盖png 7 年前 |
![]() |
gtRfnkN · 在React Native上传递触摸事件 7 年前 |
![]() |
Honigdachs · 不同宽度条的R-条形图叠加 7 年前 |