【发布时间】:2019-02-09 16:28:04
【问题描述】:
我的项目使用 React Konva (https://github.com/konvajs/react-konva)
我正在尝试将多个形状绘制到 Group 中,并使用它来掩盖“下方”的图像。
当我的组件使用globalCompositeOperation 绘制单个形状时,它会产生预期的结果。代码如下:
render() {
return (
<Group >
<Group>
<Image
image={this.state.image}
ref={node => { this.image = node; }}
/>
<Group>
<Rect fill={"#555555"}
width={200} height={200}
x={100} y={100}
globalCompositeOperation={"destination-in"}
/>
</Group>
</Group>
</Group>
)
}
注意图像是如何被裁剪成矩形的,露出下面的文本层。
但是,只要形状在组内移动,并且我在那里应用 globalCompositeOperation,就不会发生遮罩。相关部分代码:
<Group>
<Image
image={this.state.image}
ref={node => { this.image = node; }}
/>
<Group globalCompositeOperation={"destination-in"}>
<Rect fill={"#555555"}
width={200} height={200}
x={100} y={100}
/>
</Group>
</Group>
结果:
这很奇怪,因为 Konva 文档表明 Group 实际上有一个属性 globalCompositeOperation(请参阅 https://konvajs.github.io/api/Konva.Group.html#globalCompositeOperation__anchor)。
知道如何让 (React) Konva 在Group 级别应用globalCompositeOperation 而不仅仅是在Shape 级别吗?
【问题讨论】:
标签: javascript reactjs html5-canvas konvajs