- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的项目使用 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
,就不会发生 mask 。代码的相关部分:
<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
级别而不只是在 Shape
级别应用 globalCompositeOperation
吗?
最佳答案
啊,刚刚找到解决方案。
在应用globalCompositeOperation
之前,似乎需要缓存整个Group
。我假设这意味着该组首先被展平/栅格化。
在我的 React 组件中,我实现了如下解决方案:
import React from 'react';
import { Image, Group, Rect } from 'react-konva';
class CutoutImage extends React.Component {
state = {
image: null,
mask: null
}
componentDidMount() {
const image = new window.Image();
image.src = "/images/frisbee.jpg";
image.onload = () => {
this.setState({ image });
}
}
componentDidUpdate() {
if (this.image) {
this.image.cache();
}
if (this.mask) {
this.mask.cache();
}
}
render() {
return (
<Group>
<Image
image={this.state.image}
ref={node => { this.image = node; }}
/>
<Group
globalCompositeOperation={"destination-in"}
ref={node => {this.mask = node; }}
>
<Rect fill={"#555555"}
width={200} height={200}
x={100} y={100}
/>
<Rect fill={"#dddddd"}
width={200} height={200}
x={300} y={300}
/>
<Rect fill={"#dddddd"}
width={200} height={100}
x={150} y={350}
/>
</Group>
</Group>
)
}
}
export default CutoutImage;
结果:
关于javascript - 在 React Konva 中使用 globalCompositeOperation 来屏蔽形状组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52169662/
在使用 ng-lottie 时用于动画。它突然出现构建问题。 Know more . 因此,为了寻找替代品,我正在尝试 ng-particles . 我已经安装了它并按照文档添加了配置。 但是,现在我
我有一个简单的代码,我想为播放器创建蒙版。 ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.drawImage(level1, 0, 0);
我在 html5 Canvas 的 javascript 中使用 globalCompositeOperation 时遇到问题。 https://jsfiddle.net/6j51kxeh/ 我使用“
我有一个大的源图像,我想在一个圆圈内显示它的一小部分,并使圆圈外的 Canvas 部分保持透明。 Mozilla guide to Compositing with HTML5涵盖两个主题:globa
如何使用此函数在红色和绿色框之间放置一个蓝色框? 我需要实现这个效果。 这是一个 Codepen . HTML JS var canvas = document.getElementById("c
我有一个 Canvas ,其中包含透明背景上的艺术。我像这样降低饱和度: boardCtx.fillStyle = "rgba(0, 0, 0, 1.0)"; boardCtx.globalCompo
我正在尝试创建径向进度 View 。 Canvas 中的第二条弧应该只清除 Canvas 的一小部分,但它却将其全部清除。 我用过: this.ctx.globalCompositeOperation
我如何将 globalCompositeOperation(或任何其他可以给我“multiply”颜色操作的插件)集成到 jCanvas 中jQuery 插件? // How do I get thi
我正在尝试编写 Sierpinski 地毯前几次迭代的简单演示,如下所示: 我想要继续的方法是通过单击以在每一步上以较小的比例应用基本图案蒙版。在我看来,通过从一个黑色方 block 开始,然后使用“
我有这 4 个层。 我想做的是将 red 和 blue 层放入一个 mask 中。但我不希望 purple 或 orange 层受到此掩码的影响(只有 red 和 blue).我设法让它适用于 ora
我正在努力思考 globalCompositeOperation通过尝试组合这两个示例来获得属性:JSFiddle和 Codepen . 前者使用destination-out,后者使用source-
我对 globalCompositeOperation 有疑问。 我的目标是让蓝色元素仅显示在红色元素内部,并且根本不应该在红色矩形外部可见(有点溢出隐藏效果)。另外,红色和蓝色都必须具有转换能力(都
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我正在尝试使用globalCompositeOperation在 内的对象上元素,但我的目标是与 Canvas 外部的对象混合 - 一个简单的 html 标记元素,如段落。 我的最终目标是使用 di
如何使用 globalCompositeOperation 删除某些内容? http://canvaspaint.org/有一个橡皮擦,但那只是一条白线 - 只有当你的背景是白色的时候才行......
我正在尝试使用 Canvas 的 globalCompositeOperation='destination-in' 设置来绘制一系列被径向渐变掩盖的点。我想要的结果显示在下面的屏幕截图中: 相反,我
每年年底我都会制作一个烟花表演 Canvas 效果(Javascript),最后一个是: http://js1k.com/2011-dysentery/demo/955 这个效果很简单:用create
我在这里查看所有不同类型的全局复合操作: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globa
我知道 ctx.globalcompositeoperation=source-over 在使用 drawimage 时有效,但它可以与 putimagedata 一起使用吗? 最佳答案 简短的回答是
有没有一种方法可以“更轻量”地使用 globalCompositeOperation,同时使用 source-atop? (又名打火机,但仅限于已经绘制了一些东西的地方。) 最佳答案 一次只能设置一项
我是一名优秀的程序员,十分优秀!