gpt4 book ai didi

javascript - 在 KonvaJS 上使用带有 globalCompositeOperation 的图像掩码?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:25:15 25 4
gpt4 key购买 nike

我正在使用 Konva.js 框架并尝试在另一个框架上应用图像 mask 。代码完全复制自此 post .在这个jsfiddle example有添加背景(Rect)的小修改。

问题是背景没有画好。要在代码中查看它的运行情况,有一行可以注释/取消注释(以查看运行中的问题)。有人有实现此目标的想法吗?

最佳

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

let layer = new Konva.Layer();
let rect = new Konva.Rect({
x: 0,
y: 0,
width: 900,
height: 900,
draggable: true,
fill: '#ff8619',
});

// -------------------------------------
// Line to comment or uncomment
//layer.add(rect);
// -------------------------------------

stage.add(layer);

let mask = new Image();
mask.onload = () => {
let img = new Image();
img.onload = () => {
let image = new Konva.Shape({
sceneFunc: (ctx) => {
ctx.save();
ctx.drawImage(mask, -image.x(), -image.y(), 200, 200);
ctx.globalCompositeOperation = 'source-in';
ctx.drawImage(img, 0, 0, 200, 200);
ctx.globalCompositeOperation = 'source-over';
ctx.restore();
},
// (!) important
// for this case you need to define custom hit function
hitFunc: (ctx) => {
ctx.rect(0, 0, 200, 200);
ctx.fillStrokeShape(image);
},
draggable: true
});
layer.add(image);
layer.draw();
};
img.src = "http://i.imgur.com/kKjW3U4.png";

};
mask.src = "http://i.imgur.com/fQX2P8S.png";

最佳答案

问题是你需要:

1. 添加一个新层:let layer2 = new Konva.Layer();
2. 按正确顺序添加到舞台:stage.add(layer2, layer);

更新如下:
jsfiddle example

关于javascript - 在 KonvaJS 上使用带有 globalCompositeOperation 的图像掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com