跳到主要内容

HTML5 Canvas 使用 globalCompositeOperation 的混合模式教程

globalCompositeOperation 文档。

使用 Konva 框架,可以通过 globalCompositeOperation 属性设置 globalCompositeOperation 或混合模式操作。

操作说明:将红色矩形拖到绿色文本上,查看 XOR 混合效果。

import Konva from 'konva';

const stage = new Konva.Stage({
container: 'container',
width: window.innerWidth,
height: window.innerHeight
});

const layer = new Konva.Layer();

const text = new Konva.Text({
text: 'Text Shadow!',
fontFamily: 'Calibri',
fontSize: 40,
x: 20,
y: 20,
fill: 'green',
shadowColor: 'white',
shadowOffset: { x: 10, y: 10 }
});
layer.add(text);

const rect = new Konva.Rect({
x: 50,
y: 50,
width: 100,
height: 100,
fill: 'red',
draggable: true,
globalCompositeOperation: 'xor'
});

layer.add(rect);
stage.add(layer);

在组内混合​

图形的混合模式会将其与图层上已绘制的所有内容混合。如果只想让图形彼此混合,请将它们放入设置了 isolated: true 的组中(需要 Konva 10.7.0 或更高版本)。然后,组自身的 globalCompositeOperation 会将合成结果与其下方的内容混合:

const group = new Konva.Group({
isolated: true,
// blends the whole group with the layer below it
globalCompositeOperation: 'multiply',
});
// blends only with the shapes drawn before it in this group
shape.globalCompositeOperation('xor');
group.add(background, shape);

请参阅隔离组中的实时示例。