0
이미지를로드 한 후 FabricJS를 사용하여 캔버스에 이미지가 있습니다. 이미지를로드 한 후 canvas.centerObject (img)를 호출합니다. 나는 같은 이미지를 2 배로 배율을 변경했는데, Magnify Glass 기능을 작동 시키려하고 있습니다. 이미지를 가운데에 정렬하지 않고도 모든 것이 잘 작동하지만, canvas.centerObject (img)를 호출하자마자 더 큰 이미지가 rigth 위치에 표시되지 않습니다.패브릭 js 캔버스를 사용하여 가운데 객체 뒤 위치가 잘못됨
fabric.Image.fromURL('http://fabricjs.com/assets/pug_small.jpg', function (img) {
img1 = img;
img.set({
width: originalWidth,
height: originalHeight,
evented: true,
selectable: false
});
lens = fabric.util.object.clone(img);
lens.set({
width: scale * originalWidth,
height: scale * originalHeight,
clipTo: function (ctx) {
ctx.arc(-this.left + x - this.width/2, -this.top + y - this.height/2, radius, 0, Math.PI * 2, true);
}
});
canvas.add(img, lens);
canvas.centerObject(img);//*******issue here****
});
canvas.on('mouse:move', function (e) {
x = e.e.layerX;
y = e.e.layerY;
lens.set('left', -(scale - 1) * x);
lens.set('top', -(scale - 1) * y);
canvas.renderAll();
});
감사합니다.
내가 이해한다면,이 솔루션은 코드 줄을 기반으로합니다
여기에 업데이트 된 JSFiddle과 불통 코드입니다 1) * x + 300). 그래서 기본적으로 큰 이미지의 왼쪽에 300을 추가하여 작은 이미지에서 centerObject를 얻습니다. 이 값을 동적으로 계산하여 (300) 이미지의 모든 크기에서 작동하도록하려면 어떻게해야합니까? – Arnel
이미지의 너비는 절반이지만 이미지 크기의 1/4은 렌즈의 왼쪽 속성에 사용해야합니다 ...하지만 캔버스 크기에 따라 다릅니다. –
@Arnel이 질문에 대한 답변을 얻었습니까? 대답으로 표기 하시겠습니까? 구현할 때 다른 질문이 있으면 알려주십시오. 더 도와 줘서 기뻐. –