나는 Konva.js 프레임 워크를 사용하고 다른 마스크 위에 이미지 마스크를 적용하려고합니다. 코드가 post에서 완전히 복사됩니다. 이 jsfiddle example에는 배경 (Rect)을 추가하기위한 약간의 수정이 있습니다.KonvaJS에서 globalcompositeOperation과 함께 이미지 마스크를 사용 하시겠습니까?
배경이 올바르게 그려지지 않는 것이 문제입니다. 코드에서 실제 작동 상태를 보려면 주석 처리/주석 해제 (문제의 실제 상황을 파악하기 위해) 행이 있습니다. 누군가이 아이디어를 얻을 수 있습니까?
최저
문제는 당신에게 필요하다는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";
그는 Konva.js 채팅하고 당신의 바이올린을 보았다. 당신이 원하는 것은 실제로 명백 할 수 있습니다. 그러나 나는 주석 달린 줄이있는 &없이 당신의 바이올린을 보았지만 실제로 달성하고 싶은 것을 이해하지 못합니다. 어쩌면 그림 모형을 제공 할 수 있을까요? –
관심을 가져 주셔서 감사합니다. 코드의 주석을 제거하면 그 결과는 [image1] (https://snag.gy/wlR3sO.jpg)처럼 보일 것이라고 생각했습니다. 그러나 이것은 사실이 아닙니다. globalCompositeOperation은 백그라운드에서 주황색 Rect에도 적용되는 것처럼 보입니다. 희망을 충분히 명확하게 정복 당했다. – user8716023
질문에 직접 이미지를 삽입 할 수 있다는 것을 알고 계셨습니까? 질문을 편집 할 때 도구 모음을보십시오. 그 이미지를 보면 나는 동물 모양의 클리핑 패스가있는 오렌지 채워진 전경 선을 보았고 클리핑 영역에서는 다른 이미지를 보았습니다. @lavrton에 링크 된 다른 질문에 대한 답은 잠재적 인 해결책을 보여주는 3 개의 링크를 제공했습니다. –