1 javascript draggable masking konvajs
我正在使用 konvajs,需要一些帮助!
假设我需要一个可在复杂形状内拖动的图像。
我想知道是否可以使用 Konva.Group 而不是 ClipFunc 来使用遮罩,或者将遮罩图像转换为 canvas-clip-path 并将其与 ClipFunc 一起使用!
像这样:屏蔽可拖动
默认情况下,Konva
仅支持具有矩形形状的简单剪辑和clipFunc
可以在其中描述所需路径的剪辑。
https://konvajs.github.io/docs/clipping/Clipping_Function.html
在这两种情况下,剪辑都被定义为画布路径,并且您不能在此处将剪辑定义为图像。
但您可以使用 custom 直接在画布上绘制Konva.Shape
。
const girafe = new Image();
girafe.onload = () => {
const img = new Image();
img.onload = () => {
const image = new Konva.Shape({
sceneFunc: (ctx) => {
ctx.drawImage(girafe, 0, 0);
ctx.globalCompositeOperation = 'source-in';
ctx.drawImage(img, 0, 0);
},
// (!) important
// for this case you need to define custom hit function
hitFunc: (ctx) => {
ctx.rect(0, 0, girafe.width, girafe.height);
ctx.fillStrokeShape(image);
},
draggable: true
});
layer.add(image);
layer.draw();
};
img.src = "http://i.imgur.com/kKjW3U4.png";
}
girafe.src = "http://i.imgur.com/fQX2P8S.png";
Run Code Online (Sandbox Code Playgroud)
输出将是:
演示: http: //jsbin.com/qahulidube/2/edit?js ,output
注意:记住定义,hitFunc
因为Konva
命中检测不适用于此类sceneFunc
另外两个具有其他行为的演示:
http://jsbin.com/huserozire/1/edit?js,输出
http://jsbin.com/hawiricaqu/1/edit
归档时间: |
|
查看次数: |
3965 次 |
最近记录: |